{
    "name": "scaleway",
    "displayName": "Scaleway",
    "description": "A Pulumi package for creating and managing Scaleway cloud resources.",
    "keywords": [
        "pulumi",
        "scaleway",
        "pulumiverse"
    ],
    "homepage": "https://www.scaleway.com",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`scaleway` Terraform Provider](https://github.com/scaleway/terraform-provider-scaleway).",
    "repository": "https://github.com/pulumiverse/pulumi-scaleway",
    "logoUrl": "https://raw.githubusercontent.com/pulumiverse/pulumi-scaleway/master/assets/scaleway.png",
    "pluginDownloadURL": "github://api.github.com/pulumiverse",
    "publisher": "pulumiverse",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "language": {
        "csharp": {
            "packageReferences": {
                "Pulumi": "3.*"
            },
            "compatibility": "tfbridge20",
            "rootNamespace": "Pulumiverse",
            "respectSchemaVersion": true
        },
        "go": {
            "importBasePath": "github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "nodejs": {
            "packageName": "@pulumiverse/scaleway",
            "packageDescription": "A Pulumi package for creating and managing Scaleway cloud resources.",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/scaleway/terraform-provider-scaleway)\n\u003e distributed under [MIT](https://mit-license.org/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-scaleway` repo](https://github.com/pulumiverse/pulumi-scaleway/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-scaleway` repo](https://github.com/scaleway/terraform-provider-scaleway/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": "pulumiverse_scaleway",
            "requires": {
                "pulumi": "\u003e=3.0.0,\u003c4.0.0"
            },
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/scaleway/terraform-provider-scaleway)\n\u003e distributed under [MIT](https://mit-license.org/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-scaleway` repo](https://github.com/pulumiverse/pulumi-scaleway/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-scaleway` repo](https://github.com/scaleway/terraform-provider-scaleway/issues).",
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true,
            "pyproject": {
                "enabled": true
            }
        }
    },
    "config": {
        "variables": {
            "accessKey": {
                "type": "string",
                "description": "The Scaleway access key.",
                "defaultInfo": {
                    "environment": [
                        "SCW_ACCESS_KEY"
                    ]
                }
            },
            "apiUrl": {
                "type": "string",
                "description": "The Scaleway API URL to use."
            },
            "organizationId": {
                "type": "string",
                "description": "The Scaleway organization ID.",
                "defaultInfo": {
                    "environment": [
                        "SCW_ORGANIZATION_ID"
                    ]
                }
            },
            "profile": {
                "type": "string",
                "description": "The Scaleway profile to use."
            },
            "projectId": {
                "type": "string",
                "description": "The Scaleway project ID.",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_PROJECT_ID"
                    ]
                }
            },
            "region": {
                "type": "string",
                "description": "The region you want to attach the resource to",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_REGION"
                    ]
                }
            },
            "secretKey": {
                "type": "string",
                "description": "The Scaleway secret Key.",
                "defaultInfo": {
                    "environment": [
                        "SCW_SECRET_KEY"
                    ]
                }
            },
            "zone": {
                "type": "string",
                "description": "The zone you want to attach the resource to",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_ZONE"
                    ]
                }
            }
        }
    },
    "types": {
        "scaleway:account/getProjectsProject:getProjectsProject": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "(Computed) The date and time when the project was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Computed) The description of the project.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Computed) The unique identifier of the project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Computed) The name of the project.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The unique identifier of the Organization with which the Projects are associated.\nIf no default \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e is set, one must be set explicitly in this datasource\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "(Computed) The date and time when the project was updated.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "id",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:applesilicon/ServerPrivateIp:ServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:applesilicon/ServerPrivateNetwork:ServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the private network was created.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPAM IP IDs to attach to the server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the private network.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the private network was last updated.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated with the private network.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "id",
                        "ipamIpIds",
                        "status",
                        "updatedAt",
                        "vlan"
                    ]
                }
            }
        },
        "scaleway:audittrail/getEventEvent:getEventEvent": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the resource attached to the event. (UUID format)\n"
                },
                "locality": {
                    "type": "string",
                    "description": "Locality of the resource attached to the event.\n"
                },
                "methodName": {
                    "type": "string",
                    "description": "Name of the method of the API call performed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) ID of the Organization containing the Audit Trail events.\n"
                },
                "principalId": {
                    "type": "string",
                    "description": "ID of the User or IAM application at the origin of the event.\n"
                },
                "productName": {
                    "type": "string",
                    "description": "Name of the Scaleway product in a hyphenated format.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the Project containing the Audit Trail events.\n"
                },
                "recordedAt": {
                    "type": "string",
                    "description": "Timestamp of the event. (RFC 3339 format)\n"
                },
                "requestBody": {
                    "type": "string",
                    "description": "Request at the origin of the event.\n"
                },
                "requestId": {
                    "type": "string",
                    "description": "Unique identifier of the request at the origin of the event. (UUID format)\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:audittrail/getEventEventResource:getEventEventResource"
                    },
                    "description": "List of resources attached to the event.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "Name of the service of the API call performed.\n"
                },
                "sourceIp": {
                    "type": "string",
                    "description": "IP address at the origin of the event.\n"
                },
                "statusCode": {
                    "type": "integer",
                    "description": "HTTP status code resulting of the API call.\n"
                },
                "userAgent": {
                    "type": "string",
                    "description": "User Agent at the origin of the event.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "locality",
                "methodName",
                "organizationId",
                "principalId",
                "productName",
                "projectId",
                "recordedAt",
                "requestBody",
                "requestId",
                "resources",
                "serviceName",
                "sourceIp",
                "statusCode",
                "userAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:audittrail/getEventEventResource:getEventEventResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the resource attached to the event. (UUID format)\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Scaleway resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Scaleway resource.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:autoscaling/InstanceGroupCapacity:InstanceGroupCapacity": {
            "properties": {
                "cooldownDelay": {
                    "type": "integer",
                    "description": "Time (in seconds) after a scaling action during which requests to carry out a new scaling action will be denied.\n"
                },
                "maxReplicas": {
                    "type": "integer",
                    "description": "The maximum count of Instances for the Instance group.\n"
                },
                "minReplicas": {
                    "type": "integer",
                    "description": "The minimum count of Instances for the Instance group.\n"
                }
            },
            "type": "object"
        },
        "scaleway:autoscaling/InstanceGroupLoadBalancer:InstanceGroupLoadBalancer": {
            "properties": {
                "backendIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Load Balancer backend IDs.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network attached to the Load Balancer.\n"
                }
            },
            "type": "object"
        },
        "scaleway:autoscaling/InstancePolicyMetric:InstancePolicyMetric": {
            "properties": {
                "aggregate": {
                    "type": "string",
                    "description": "How the values sampled for 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 should be aggregated.\n"
                },
                "cockpitMetricName": {
                    "type": "string",
                    "description": "The custom metric to use for this policy. This must be stored in Scaleway Cockpit. The metric forms the basis of the condition that will be checked to determine whether a scaling action should be triggered\n"
                },
                "managedMetric": {
                    "type": "string",
                    "description": "The managed metric to use for this policy. These are available by default in Cockpit without any configuration or \u003cspan pulumi-lang-nodejs=\"`nodeExporter`\" pulumi-lang-dotnet=\"`NodeExporter`\" pulumi-lang-go=\"`nodeExporter`\" pulumi-lang-python=\"`node_exporter`\" pulumi-lang-yaml=\"`nodeExporter`\" pulumi-lang-java=\"`nodeExporter`\"\u003e`nodeExporter`\u003c/span\u003e. The chosen metric forms the basis of the condition that will be checked to determine whether a scaling action should be triggered.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name or description of the metric policy.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "Operator used when comparing the threshold value of the chosen \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 the actual sampled and aggregated value.\n"
                },
                "samplingRangeMin": {
                    "type": "integer",
                    "description": "The Interval of time, in minutes, during which metric is sampled.\n"
                },
                "threshold": {
                    "type": "integer",
                    "description": "The threshold value to measure the aggregated sampled \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 value against. Combined with the \u003cspan pulumi-lang-nodejs=\"`operator`\" pulumi-lang-dotnet=\"`Operator`\" pulumi-lang-go=\"`operator`\" pulumi-lang-python=\"`operator`\" pulumi-lang-yaml=\"`operator`\" pulumi-lang-java=\"`operator`\"\u003e`operator`\u003c/span\u003e field, determines whether a scaling action should be triggered.\n"
                }
            },
            "type": "object",
            "required": [
                "aggregate",
                "name",
                "operator"
            ]
        },
        "scaleway:autoscaling/InstanceTemplateVolume:InstanceTemplateVolume": {
            "properties": {
                "boot": {
                    "type": "boolean",
                    "description": "Force the Instance to boot on this volume.\n"
                },
                "fromEmpty": {
                    "$ref": "#/types/scaleway:autoscaling/InstanceTemplateVolumeFromEmpty:InstanceTemplateVolumeFromEmpty",
                    "description": "Volume instance template from empty\n"
                },
                "fromSnapshot": {
                    "$ref": "#/types/scaleway:autoscaling/InstanceTemplateVolumeFromSnapshot:InstanceTemplateVolumeFromSnapshot",
                    "description": "Volume instance template from snapshot\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume.\n"
                },
                "perfIops": {
                    "type": "integer",
                    "description": "The maximum IO/s expected, according to the different options available in stock (`5000 | 15000`).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags assigned to the volume.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of the volume.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "volumeType"
            ]
        },
        "scaleway:autoscaling/InstanceTemplateVolumeFromEmpty:InstanceTemplateVolumeFromEmpty": {
            "properties": {
                "size": {
                    "type": "integer",
                    "description": "Size in GB of the new empty volume\n"
                }
            },
            "type": "object",
            "required": [
                "size"
            ]
        },
        "scaleway:autoscaling/InstanceTemplateVolumeFromSnapshot:InstanceTemplateVolumeFromSnapshot": {
            "properties": {
                "size": {
                    "type": "integer",
                    "description": "Override size (in GB) of the cloned volume\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "ID of the snapshot to clone\n"
                }
            },
            "type": "object",
            "required": [
                "snapshotId"
            ]
        },
        "scaleway:autoscaling/getInstanceGroupCapacity:getInstanceGroupCapacity": {
            "properties": {
                "cooldownDelay": {
                    "type": "integer",
                    "description": "Time (in seconds) after a scaling action during which requests to carry out a new scaling action will be denied\n"
                },
                "maxReplicas": {
                    "type": "integer",
                    "description": "The maximum count of Instances for the Instance group\n"
                },
                "minReplicas": {
                    "type": "integer",
                    "description": "The minimum count of Instances for the Instance group\n"
                }
            },
            "type": "object",
            "required": [
                "cooldownDelay",
                "maxReplicas",
                "minReplicas"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:autoscaling/getInstanceGroupLoadBalancer:getInstanceGroupLoadBalancer": {
            "properties": {
                "backendIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Load Balancer backend IDs\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the load balancer\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network attached to the Load Balancer\n"
                }
            },
            "type": "object",
            "required": [
                "backendIds",
                "id",
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:autoscaling/getInstancePolicyMetric:getInstancePolicyMetric": {
            "properties": {
                "aggregate": {
                    "type": "string",
                    "description": "How the values sampled for 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 should be aggregated\n"
                },
                "cockpitMetricName": {
                    "type": "string",
                    "description": "Custom metric to use for this policy. This must be stored in Scaleway Cockpit. The metric forms the basis of the condition that will be checked to determine whether a scaling action should be triggered\n"
                },
                "managedMetric": {
                    "type": "string",
                    "description": "Managed metric to use for this policy. These are available by default in Cockpit without any configuration or \u003cspan pulumi-lang-nodejs=\"`nodeExporter`\" pulumi-lang-dotnet=\"`NodeExporter`\" pulumi-lang-go=\"`nodeExporter`\" pulumi-lang-python=\"`node_exporter`\" pulumi-lang-yaml=\"`nodeExporter`\" pulumi-lang-java=\"`nodeExporter`\"\u003e`nodeExporter`\u003c/span\u003e. The chosen metric forms the basis of the condition that will be checked to determine whether a scaling action should be triggered\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Instance policy. Only one 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=\"`instancePolicyId`\" pulumi-lang-dotnet=\"`InstancePolicyId`\" pulumi-lang-go=\"`instancePolicyId`\" pulumi-lang-python=\"`instance_policy_id`\" pulumi-lang-yaml=\"`instancePolicyId`\" pulumi-lang-java=\"`instancePolicyId`\"\u003e`instancePolicyId`\u003c/span\u003e should be specified. When using \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=\"`instanceGroupId`\" pulumi-lang-dotnet=\"`InstanceGroupId`\" pulumi-lang-go=\"`instanceGroupId`\" pulumi-lang-python=\"`instance_group_id`\" pulumi-lang-yaml=\"`instanceGroupId`\" pulumi-lang-java=\"`instanceGroupId`\"\u003e`instanceGroupId`\u003c/span\u003e is required.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "Operator used when comparing the threshold value of the chosen \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 the actual sampled and aggregated value\n"
                },
                "samplingRangeMin": {
                    "type": "integer",
                    "description": "Interval of time, in minutes, during which metric is sampled\n"
                },
                "threshold": {
                    "type": "integer",
                    "description": "Threshold value to measure the aggregated sampled \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 value against. Combined with the \u003cspan pulumi-lang-nodejs=\"`operator`\" pulumi-lang-dotnet=\"`Operator`\" pulumi-lang-go=\"`operator`\" pulumi-lang-python=\"`operator`\" pulumi-lang-yaml=\"`operator`\" pulumi-lang-java=\"`operator`\"\u003e`operator`\u003c/span\u003e field, determines whether a scaling action should be triggered\n"
                }
            },
            "type": "object",
            "required": [
                "aggregate",
                "cockpitMetricName",
                "managedMetric",
                "name",
                "operator",
                "samplingRangeMin",
                "threshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:billing/getConsumptionsConsumption:getConsumptionsConsumption": {
            "properties": {
                "billedQuantity": {
                    "type": "string",
                    "description": "The consumed quantity.\n"
                },
                "categoryName": {
                    "type": "string",
                    "description": "The name of the consumption category.\n"
                },
                "productName": {
                    "type": "string",
                    "description": "The product name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the consumption list is associated with.\n"
                },
                "sku": {
                    "type": "string",
                    "description": "The unique identifier of the product.\n"
                },
                "unit": {
                    "type": "string",
                    "description": "The unit of consumed quantity.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The monetary value of the consumption.\n"
                }
            },
            "type": "object",
            "required": [
                "billedQuantity",
                "categoryName",
                "productName",
                "projectId",
                "sku",
                "unit",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:billing/getInvoicesInvoice:getInvoicesInvoice": {
            "properties": {
                "billingPeriod": {
                    "type": "string",
                    "description": "The billing period of the invoice in the YYYY-MM format.\n"
                },
                "dueDate": {
                    "type": "string",
                    "description": "The payment time limit, set according to the Organization's payment conditions (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated invoice ID.\n"
                },
                "invoiceType": {
                    "type": "string",
                    "description": "Invoices with the given type are listed. Valid values are \u003cspan pulumi-lang-nodejs=\"`periodic`\" pulumi-lang-dotnet=\"`Periodic`\" pulumi-lang-go=\"`periodic`\" pulumi-lang-python=\"`periodic`\" pulumi-lang-yaml=\"`periodic`\" pulumi-lang-java=\"`periodic`\"\u003e`periodic`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`purchase`\" pulumi-lang-dotnet=\"`Purchase`\" pulumi-lang-go=\"`purchase`\" pulumi-lang-python=\"`purchase`\" pulumi-lang-yaml=\"`purchase`\" pulumi-lang-java=\"`purchase`\"\u003e`purchase`\u003c/span\u003e.\n"
                },
                "issuedDate": {
                    "type": "string",
                    "description": "The date when the invoice was sent to the customer (RFC 3339 format).\n"
                },
                "number": {
                    "type": "integer",
                    "description": "The invoice number.\n"
                },
                "organizationName": {
                    "type": "string",
                    "description": "The organization name.\n"
                },
                "sellerName": {
                    "type": "string",
                    "description": "The name of the seller (Scaleway).\n"
                },
                "startDate": {
                    "type": "string",
                    "description": "The start date of the billing period (RFC 3339 format).\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the invoice.\n"
                },
                "stopDate": {
                    "type": "string",
                    "description": "The end date of the billing period (RFC 3339 format).\n"
                },
                "totalDiscount": {
                    "type": "string",
                    "description": "The total discount amount of the invoice.\n"
                },
                "totalTax": {
                    "type": "string",
                    "description": "The total tax amount of the invoice.\n"
                },
                "totalTaxed": {
                    "type": "string",
                    "description": "The total amount, taxed.\n"
                },
                "totalUndiscount": {
                    "type": "string",
                    "description": "The total amount of the invoice before applying the discount.\n"
                },
                "totalUntaxed": {
                    "type": "string",
                    "description": "The total amount, untaxed.\n"
                }
            },
            "type": "object",
            "required": [
                "billingPeriod",
                "dueDate",
                "id",
                "invoiceType",
                "issuedDate",
                "number",
                "organizationName",
                "sellerName",
                "startDate",
                "state",
                "stopDate",
                "totalDiscount",
                "totalTax",
                "totalTaxed",
                "totalUndiscount",
                "totalUntaxed"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:block/SnapshotExport:SnapshotExport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket where the QCOW file will be saved.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The desired key (path) for the QCOW file within the bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:block/SnapshotImport:SnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket containing the QCOW file.\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "The key of the QCOW file within the bucket.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:block/getSnapshotExport:getSnapshotExport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:block/getSnapshotImport:getSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/ContainerHealthCheck:ContainerHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/ContainerHealthCheckHttp:ContainerHealthCheckHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failureThreshold",
                        "https",
                        "interval",
                        "tcp"
                    ]
                }
            }
        },
        "scaleway:containers/ContainerHealthCheckHttp:ContainerHealthCheckHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "path"
                    ]
                }
            }
        },
        "scaleway:containers/ContainerLivenessProbe:ContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "http": {
                    "$ref": "#/types/scaleway:containers/ContainerLivenessProbeHttp:ContainerLivenessProbeHttp",
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "interval",
                "timeout"
            ]
        },
        "scaleway:containers/ContainerLivenessProbeHttp:ContainerLivenessProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "scaleway:containers/ContainerScalingOption:ContainerScalingOption": {
            "properties": {
                "concurrentRequestsThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the number of concurrent requests being processed per container instance.\n"
                },
                "cpuUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the CPU usage of a container instance.\n"
                },
                "memoryUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the memory usage of a container instance.\n"
                }
            },
            "type": "object"
        },
        "scaleway:containers/ContainerStartupProbe:ContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "http": {
                    "$ref": "#/types/scaleway:containers/ContainerStartupProbeHttp:ContainerStartupProbeHttp",
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation).\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "Perform TCP check on the container\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "interval",
                "timeout"
            ]
        },
        "scaleway:containers/ContainerStartupProbeHttp:ContainerStartupProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "scaleway:containers/TriggerCron:TriggerCron": {
            "properties": {
                "body": {
                    "type": "string",
                    "description": "Body to send to the container when the trigger is invoked.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send to the container when the trigger is invoked.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "UNIX cron schedule to run job (e.g., \"* * * * *\").\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "Timezone for the cron schedule, in tz database format (e.g., \"Europe/Paris\").\n"
                }
            },
            "type": "object",
            "required": [
                "schedule",
                "timezone"
            ]
        },
        "scaleway:containers/TriggerDestinationConfig:TriggerDestinationConfig": {
            "properties": {
                "httpMethod": {
                    "type": "string",
                    "description": "The HTTP method to use when sending the request (e.g., get, post, put, patch, delete).\n"
                },
                "httpPath": {
                    "type": "string",
                    "description": "The HTTP path to send the request to (e.g., \"/my-webhook-endpoint\").\n"
                }
            },
            "type": "object",
            "required": [
                "httpMethod",
                "httpPath"
            ]
        },
        "scaleway:containers/TriggerNats:TriggerNats": {
            "properties": {
                "accountId": {
                    "type": "string",
                    "description": "unique identifier of the Messaging and Queuing NATS account  .\n"
                },
                "credentialsFileContent": {
                    "type": "string",
                    "description": "The content of the NATS credentials file that will be used to authenticate with the NATS server and subscribe to the specified subject.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that contains the Messaging and Queuing NATS account (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Messaging and Queuing NATS account is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "serverUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of URLs of the NATS server (e.g., \"nats://nats.mnq.fr-par.scaleway.com:4222\").\n"
                },
                "subject": {
                    "type": "string",
                    "description": "NATS subject to subscribe to (e.g., \\\"my-subject\\\").\"\n"
                }
            },
            "type": "object",
            "required": [
                "credentialsFileContent",
                "serverUrls",
                "subject"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "credentialsFileContent",
                        "projectId",
                        "region",
                        "serverUrls",
                        "subject"
                    ]
                }
            }
        },
        "scaleway:containers/TriggerSqs:TriggerSqs": {
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key for accessing the SQS queue.\n",
                    "secret": true
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint URL to use to access SQS (e.g., \"https://sqs.mnq.fr-par.scaleway.com\").\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which SQS is enabled, (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "queue": {
                    "type": "string",
                    "description": "The name of the SQS queue.  This argument is no longer supported.\n",
                    "deprecationMessage": "This field is no longer supported, please use\u003cspan pulumi-lang-nodejs=\" queueUrl \" pulumi-lang-dotnet=\" QueueUrl \" pulumi-lang-go=\" queueUrl \" pulumi-lang-python=\" queue_url \" pulumi-lang-yaml=\" queueUrl \" pulumi-lang-java=\" queueUrl \"\u003e queueUrl \u003c/span\u003einstead to identify the queue.",
                    "willReplaceOnChanges": true
                },
                "queueUrl": {
                    "type": "string",
                    "description": "The URL of the SQS queue to monitor for messages.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where SQS is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key for accessing the SQS queue.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "accessKey",
                "endpoint",
                "queueUrl",
                "secretKey"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "accessKey",
                        "endpoint",
                        "projectId",
                        "queueUrl",
                        "region",
                        "secretKey"
                    ]
                }
            }
        },
        "scaleway:containers/getContainerHealthCheck:getContainerHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/getContainerHealthCheckHttp:getContainerHealthCheckHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerHealthCheckHttp:getContainerHealthCheckHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerLivenessProbe:getContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/getContainerLivenessProbeHttp:getContainerLivenessProbeHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp",
                "timeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerLivenessProbeHttp:getContainerLivenessProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerScalingOption:getContainerScalingOption": {
            "properties": {
                "concurrentRequestsThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the number of concurrent requests being processed per container instance.\n"
                },
                "cpuUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the CPU usage of a container instance.\n"
                },
                "memoryUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the memory usage of a container instance.\n"
                }
            },
            "type": "object",
            "required": [
                "concurrentRequestsThreshold",
                "cpuUsageThreshold",
                "memoryUsageThreshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerStartupProbe:getContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/getContainerStartupProbeHttp:getContainerStartupProbeHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp",
                "timeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:containers/getContainerStartupProbeHttp:getContainerStartupProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/AclAclRule:AclAclRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A text describing this rule. Default description: `IP allowed`\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "ip"
                    ]
                }
            }
        },
        "scaleway:databases/InstanceLoadBalancer:InstanceLoadBalancer": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:databases/InstanceLogsPolicy:InstanceLogsPolicy": {
            "properties": {
                "maxAgeRetention": {
                    "type": "integer",
                    "description": "The max age (in days) of remote logs to keep on the Database Instance\n"
                },
                "totalDiskRetention": {
                    "type": "integer",
                    "description": "The max disk size of remote logs to keep on the Database Instance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxAgeRetention",
                        "totalDiskRetention"
                    ]
                }
            }
        },
        "scaleway:databases/InstancePrivateIp:InstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Version ID to use in upgrade requests.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:databases/InstancePrivateNetwork:InstancePrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "Whether or not the private network endpoint should be configured with IPAM\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "ipNet": {
                    "type": "string",
                    "description": "The IP with the given mask within the private subnet\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone you want to attach the resource to\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIpam",
                        "endpointId",
                        "hostname",
                        "ip",
                        "ipNet",
                        "name",
                        "pnId",
                        "port"
                    ]
                }
            }
        },
        "scaleway:databases/InstanceReadReplica:InstanceReadReplica": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:databases/InstanceUpgradableVersion:InstanceUpgradableVersion": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Version ID to use in upgrade requests.\n"
                },
                "minorVersion": {
                    "type": "string",
                    "description": "Minor version string (e.g., `15.5.0`).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version string (e.g., `15.5`).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "minorVersion",
                        "name",
                        "version"
                    ]
                }
            }
        },
        "scaleway:databases/ReadReplicaDirectAccess:ReadReplicaDirectAccess": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint of the Read Replica.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint. Only one of IP and hostname may be set.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the endpoint (IP address). Only one of IP and hostname may be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:databases/ReadReplicaPrivateNetwork:ReadReplicaPrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "If true, the IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n\n\u003e **Important:** One of \u003cspan pulumi-lang-nodejs=\"`serviceIp`\" pulumi-lang-dotnet=\"`ServiceIp`\" pulumi-lang-go=\"`serviceIp`\" pulumi-lang-python=\"`service_ip`\" pulumi-lang-yaml=\"`serviceIp`\" pulumi-lang-java=\"`serviceIp`\"\u003e`serviceIp`\u003c/span\u003e or `enable_ipam=true` must be set.\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint of the Read Replica.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint. Only one of IP and hostname may be set.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the endpoint (IP address). Only one of IP and hostname may be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "UUID of the Private Netork to be connected to the Read Replica.\n"
                },
                "serviceIp": {
                    "type": "string",
                    "description": "The IP network address within the private subnet. This must be an IPv4 address with a CIDR notation. If not set, The IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "Private network zone\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIpam",
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port",
                        "privateNetworkId",
                        "serviceIp",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:databases/getAclAclRule:getAclAclRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A simple text describing this rule\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstanceLoadBalancer:getInstanceLoadBalancer": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The endpoint ID\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of your endpoint\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP of your load balancer service\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of your load balancer service\n"
                }
            },
            "type": "object",
            "required": [
                "endpointId",
                "hostname",
                "ip",
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstanceLogsPolicy:getInstanceLogsPolicy": {
            "properties": {
                "maxAgeRetention": {
                    "type": "integer",
                    "description": "The max age (in days) of remote logs to keep on the Database Instance\n"
                },
                "totalDiskRetention": {
                    "type": "integer",
                    "description": "The max disk size of remote logs to keep on the Database Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "maxAgeRetention",
                "totalDiskRetention"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstancePrivateIp:getInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Database Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstancePrivateNetwork:getInstancePrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "Whether or not the private network endpoint should be configured with IPAM\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The endpoint ID\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of your endpoint\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP of your Instance within the private service\n"
                },
                "ipNet": {
                    "type": "string",
                    "description": "The IP with the given mask within the private subnet\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of your private service\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone you want to attach the resource to\n"
                }
            },
            "type": "object",
            "required": [
                "enableIpam",
                "endpointId",
                "hostname",
                "ip",
                "ipNet",
                "name",
                "pnId",
                "port",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstanceReadReplica:getInstanceReadReplica": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "IP of the replica\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the replica\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:databases/getInstanceUpgradableVersion:getInstanceUpgradableVersion": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Database Instance.\n"
                },
                "minorVersion": {
                    "type": "string",
                    "description": "Minor version string\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version string\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "minorVersion",
                "name",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:datawarehouse/DeploymentPrivateNetwork:DeploymentPrivateNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "DNS record for the private endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the private endpoint.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The ID of the private network. Format: `{region}/{id}` or just `{id}`.\n",
                    "willReplaceOnChanges": true
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:datawarehouse/DeploymentPrivateNetworkService:DeploymentPrivateNetworkService"
                    },
                    "description": "List of services exposed on the private endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecord",
                        "id",
                        "pnId",
                        "services"
                    ]
                }
            }
        },
        "scaleway:datawarehouse/DeploymentPrivateNetworkService:DeploymentPrivateNetworkService": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "TCP port number.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Service protocol (e.g., \"tcp\", \"https\", \"mysql\").\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port",
                        "protocol"
                    ]
                }
            }
        },
        "scaleway:datawarehouse/DeploymentPublicNetwork:DeploymentPublicNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "DNS record for the private endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the private endpoint.\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:datawarehouse/DeploymentPublicNetworkService:DeploymentPublicNetworkService"
                    },
                    "description": "List of services exposed on the private endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecord",
                        "id",
                        "services"
                    ]
                }
            }
        },
        "scaleway:datawarehouse/DeploymentPublicNetworkService:DeploymentPublicNetworkService": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "TCP port number.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Service protocol (e.g., \"tcp\", \"https\", \"mysql\").\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port",
                        "protocol"
                    ]
                }
            }
        },
        "scaleway:domain/RecordGeoIp:RecordGeoIp": {
            "properties": {
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RecordGeoIpMatch:RecordGeoIpMatch"
                    },
                    "description": "The list of matches\n"
                }
            },
            "type": "object",
            "required": [
                "matches"
            ]
        },
        "scaleway:domain/RecordGeoIpMatch:RecordGeoIpMatch": {
            "properties": {
                "continents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of continents (eg: EU for Europe, NA for North America, AS for Asia...). List of all continents code: https://api.scaleway.com/domain-private/v2beta1/continents\n"
                },
                "countries": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of countries (eg: FR for France, US for the United States, GB for Great Britain...). List of all countries code: https://api.scaleway.com/domain-private/v2beta1/countries\n"
                },
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                }
            },
            "type": "object",
            "required": [
                "data"
            ]
        },
        "scaleway:domain/RecordHttpService:RecordHttpService": {
            "properties": {
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPs to check\n"
                },
                "mustContain": {
                    "type": "string",
                    "description": "Text to search\n"
                },
                "strategy": {
                    "type": "string",
                    "description": "Strategy to return an IP from the IPs list\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL to match the\u003cspan pulumi-lang-nodejs=\" mustContain \" pulumi-lang-dotnet=\" MustContain \" pulumi-lang-go=\" mustContain \" pulumi-lang-python=\" must_contain \" pulumi-lang-yaml=\" mustContain \" pulumi-lang-java=\" mustContain \"\u003e mustContain \u003c/span\u003etext to validate an IP\n"
                },
                "userAgent": {
                    "type": "string",
                    "description": "User-agent used when checking the URL\n"
                }
            },
            "type": "object",
            "required": [
                "ips",
                "mustContain",
                "strategy",
                "url"
            ]
        },
        "scaleway:domain/RecordView:RecordView": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet of the view\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "subnet"
            ]
        },
        "scaleway:domain/RecordWeighted:RecordWeighted": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "The weighted IP\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "weight"
            ]
        },
        "scaleway:domain/RegistrationAdministrativeContact:RegistrationAdministrativeContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEu": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionEu:RegistrationAdministrativeContactExtensionEu",
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFr": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFr:RegistrationAdministrativeContactExtensionFr",
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "city",
                "companyIdentificationCode",
                "country",
                "email",
                "firstname",
                "lastname",
                "legalForm",
                "phoneNumber",
                "vatIdentificationCode",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addressLine1",
                        "city",
                        "companyIdentificationCode",
                        "country",
                        "email",
                        "extensionEu",
                        "extensionFr",
                        "extensionNls",
                        "firstname",
                        "lang",
                        "lastname",
                        "legalForm",
                        "phoneNumber",
                        "vatIdentificationCode",
                        "zip"
                    ]
                }
            }
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionEu:RegistrationAdministrativeContactExtensionEu": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFr:RegistrationAdministrativeContactExtensionFr": {
            "properties": {
                "associationInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFrAssociationInfo:RegistrationAdministrativeContactExtensionFrAssociationInfo",
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo:RegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo",
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFrDunsInfo:RegistrationAdministrativeContactExtensionFrDunsInfo",
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFrIndividualInfo:RegistrationAdministrativeContactExtensionFrIndividualInfo",
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContactExtensionFrTrademarkInfo:RegistrationAdministrativeContactExtensionFrTrademarkInfo",
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFrAssociationInfo:RegistrationAdministrativeContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo:RegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFrDunsInfo:RegistrationAdministrativeContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFrIndividualInfo:RegistrationAdministrativeContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationAdministrativeContactExtensionFrTrademarkInfo:RegistrationAdministrativeContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationDsRecord:RegistrationDsRecord": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The algorithm used for dnssec (e.g., rsasha256, ecdsap256sha256).\n"
                },
                "digests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationDsRecordDigest:RegistrationDsRecordDigest"
                    },
                    "description": "Details about the digest.\n"
                },
                "keyId": {
                    "type": "integer",
                    "description": "The identifier for the dnssec key.\n"
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationDsRecordPublicKey:RegistrationDsRecordPublicKey"
                    },
                    "description": "Public key associated with the dnssec record.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "algorithm",
                        "digests",
                        "keyId",
                        "publicKeys"
                    ]
                }
            }
        },
        "scaleway:domain/RegistrationDsRecordDigest:RegistrationDsRecordDigest": {
            "properties": {
                "digest": {
                    "type": "string",
                    "description": "The digest value.\n"
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationDsRecordDigestPublicKey:RegistrationDsRecordDigestPublicKey"
                    },
                    "description": "The public key associated with the digest.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The digest type for the DS record (e.g., sha_1, sha_256, gost_r_34_11_94, sha_384).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "digest",
                        "publicKeys",
                        "type"
                    ]
                }
            }
        },
        "scaleway:domain/RegistrationDsRecordDigestPublicKey:RegistrationDsRecordDigestPublicKey": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The public key value.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "scaleway:domain/RegistrationDsRecordPublicKey:RegistrationDsRecordPublicKey": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The public key value.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "scaleway:domain/RegistrationOwnerContact:RegistrationOwnerContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEu": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionEu:RegistrationOwnerContactExtensionEu",
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFr": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFr:RegistrationOwnerContactExtensionFr",
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "city",
                "companyIdentificationCode",
                "country",
                "email",
                "firstname",
                "lastname",
                "legalForm",
                "phoneNumber",
                "vatIdentificationCode",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addressLine1",
                        "city",
                        "companyIdentificationCode",
                        "country",
                        "email",
                        "extensionEu",
                        "extensionFr",
                        "extensionNls",
                        "firstname",
                        "lang",
                        "lastname",
                        "legalForm",
                        "phoneNumber",
                        "vatIdentificationCode",
                        "zip"
                    ]
                }
            }
        },
        "scaleway:domain/RegistrationOwnerContactExtensionEu:RegistrationOwnerContactExtensionEu": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFr:RegistrationOwnerContactExtensionFr": {
            "properties": {
                "associationInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFrAssociationInfo:RegistrationOwnerContactExtensionFrAssociationInfo",
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFrCodeAuthAfnicInfo:RegistrationOwnerContactExtensionFrCodeAuthAfnicInfo",
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFrDunsInfo:RegistrationOwnerContactExtensionFrDunsInfo",
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFrIndividualInfo:RegistrationOwnerContactExtensionFrIndividualInfo",
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContactExtensionFrTrademarkInfo:RegistrationOwnerContactExtensionFrTrademarkInfo",
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFrAssociationInfo:RegistrationOwnerContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFrCodeAuthAfnicInfo:RegistrationOwnerContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFrDunsInfo:RegistrationOwnerContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFrIndividualInfo:RegistrationOwnerContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationOwnerContactExtensionFrTrademarkInfo:RegistrationOwnerContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContact:RegistrationTechnicalContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEu": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionEu:RegistrationTechnicalContactExtensionEu",
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFr": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFr:RegistrationTechnicalContactExtensionFr",
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "city",
                "companyIdentificationCode",
                "country",
                "email",
                "firstname",
                "lastname",
                "legalForm",
                "phoneNumber",
                "vatIdentificationCode",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addressLine1",
                        "city",
                        "companyIdentificationCode",
                        "country",
                        "email",
                        "extensionEu",
                        "extensionFr",
                        "extensionNls",
                        "firstname",
                        "lang",
                        "lastname",
                        "legalForm",
                        "phoneNumber",
                        "vatIdentificationCode",
                        "zip"
                    ]
                }
            }
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionEu:RegistrationTechnicalContactExtensionEu": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFr:RegistrationTechnicalContactExtensionFr": {
            "properties": {
                "associationInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFrAssociationInfo:RegistrationTechnicalContactExtensionFrAssociationInfo",
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo:RegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo",
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFrDunsInfo:RegistrationTechnicalContactExtensionFrDunsInfo",
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFrIndividualInfo:RegistrationTechnicalContactExtensionFrIndividualInfo",
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfo": {
                    "$ref": "#/types/scaleway:domain/RegistrationTechnicalContactExtensionFrTrademarkInfo:RegistrationTechnicalContactExtensionFrTrademarkInfo",
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFrAssociationInfo:RegistrationTechnicalContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo:RegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFrDunsInfo:RegistrationTechnicalContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFrIndividualInfo:RegistrationTechnicalContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/RegistrationTechnicalContactExtensionFrTrademarkInfo:RegistrationTechnicalContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object"
        },
        "scaleway:domain/getRecordGeoIp:getRecordGeoIp": {
            "properties": {
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRecordGeoIpMatch:getRecordGeoIpMatch"
                    },
                    "description": "The list of matches\n"
                }
            },
            "type": "object",
            "required": [
                "matches"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRecordGeoIpMatch:getRecordGeoIpMatch": {
            "properties": {
                "continents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of continents (eg: EU for Europe, NA for North America, AS for Asia...). List of all continents code: https://api.scaleway.com/domain-private/v2beta1/continents\n"
                },
                "countries": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of countries (eg: FR for France, US for the United States, GB for Great Britain...). List of all countries code: https://api.scaleway.com/domain-private/v2beta1/countries\n"
                },
                "data": {
                    "type": "string",
                    "description": "The content of the record (e.g., an IPv4 address for an `A` record or a string for a `TXT` record). Cannot be used with \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.\n"
                }
            },
            "type": "object",
            "required": [
                "continents",
                "countries",
                "data"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRecordHttpService:getRecordHttpService": {
            "properties": {
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPs to check\n"
                },
                "mustContain": {
                    "type": "string",
                    "description": "Text to search\n"
                },
                "strategy": {
                    "type": "string",
                    "description": "Strategy to return an IP from the IPs list\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL to match the\u003cspan pulumi-lang-nodejs=\" mustContain \" pulumi-lang-dotnet=\" MustContain \" pulumi-lang-go=\" mustContain \" pulumi-lang-python=\" must_contain \" pulumi-lang-yaml=\" mustContain \" pulumi-lang-java=\" mustContain \"\u003e mustContain \u003c/span\u003etext to validate an IP\n"
                },
                "userAgent": {
                    "type": "string",
                    "description": "User-agent used when checking the URL\n"
                }
            },
            "type": "object",
            "required": [
                "ips",
                "mustContain",
                "strategy",
                "url",
                "userAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRecordView:getRecordView": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (e.g., an IPv4 address for an `A` record or a string for a `TXT` record). Cannot be used with \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.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet of the view\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "subnet"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRecordWeighted:getRecordWeighted": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "The weighted IP\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContact:getRegistrationAdministrativeContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEus": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionEus:getRegistrationAdministrativeContactExtensionEus"
                    },
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFrs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFr:getRegistrationAdministrativeContactExtensionFr"
                    },
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "addressLine2",
                "city",
                "companyIdentificationCode",
                "companyName",
                "country",
                "email",
                "emailAlt",
                "extensionEus",
                "extensionFrs",
                "extensionNls",
                "faxNumber",
                "firstname",
                "lang",
                "lastname",
                "legalForm",
                "phoneNumber",
                "resale",
                "state",
                "vatIdentificationCode",
                "whoisOptIn",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionEus:getRegistrationAdministrativeContactExtensionEus": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object",
            "required": [
                "europeanCitizenship"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFr:getRegistrationAdministrativeContactExtensionFr": {
            "properties": {
                "associationInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFrAssociationInfo:getRegistrationAdministrativeContactExtensionFrAssociationInfo"
                    },
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo:getRegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo"
                    },
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFrDunsInfo:getRegistrationAdministrativeContactExtensionFrDunsInfo"
                    },
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFrIndividualInfo:getRegistrationAdministrativeContactExtensionFrIndividualInfo"
                    },
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationAdministrativeContactExtensionFrTrademarkInfo:getRegistrationAdministrativeContactExtensionFrTrademarkInfo"
                    },
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "associationInfos",
                "codeAuthAfnicInfos",
                "dunsInfos",
                "individualInfos",
                "mode",
                "trademarkInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFrAssociationInfo:getRegistrationAdministrativeContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object",
            "required": [
                "publicationJo",
                "publicationJoPage"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo:getRegistrationAdministrativeContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "codeAuthAfnic"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFrDunsInfo:getRegistrationAdministrativeContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "dunsId",
                "localId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFrIndividualInfo:getRegistrationAdministrativeContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object",
            "required": [
                "whoisOptIn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationAdministrativeContactExtensionFrTrademarkInfo:getRegistrationAdministrativeContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "trademarkInpi"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationDsRecord:getRegistrationDsRecord": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The algorithm used for dnssec (e.g., rsasha256, ecdsap256sha256).\n"
                },
                "digests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationDsRecordDigest:getRegistrationDsRecordDigest"
                    },
                    "description": "Details about the digest.\n"
                },
                "keyId": {
                    "type": "integer",
                    "description": "The identifier for the dnssec key.\n"
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationDsRecordPublicKey:getRegistrationDsRecordPublicKey"
                    },
                    "description": "Public key associated with the dnssec record.\n"
                }
            },
            "type": "object",
            "required": [
                "algorithm",
                "digests",
                "keyId",
                "publicKeys"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationDsRecordDigest:getRegistrationDsRecordDigest": {
            "properties": {
                "digest": {
                    "type": "string",
                    "description": "The digest value.\n"
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationDsRecordDigestPublicKey:getRegistrationDsRecordDigestPublicKey"
                    },
                    "description": "The public key associated with the digest.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The digest type for the DS record (e.g., sha_1, sha_256, gost_r_34_11_94, sha_384).\n"
                }
            },
            "type": "object",
            "required": [
                "digest",
                "publicKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationDsRecordDigestPublicKey:getRegistrationDsRecordDigestPublicKey": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The public key value.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationDsRecordPublicKey:getRegistrationDsRecordPublicKey": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The public key value.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContact:getRegistrationOwnerContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEus": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionEus:getRegistrationOwnerContactExtensionEus"
                    },
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFrs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFr:getRegistrationOwnerContactExtensionFr"
                    },
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "addressLine2",
                "city",
                "companyIdentificationCode",
                "companyName",
                "country",
                "email",
                "emailAlt",
                "extensionEus",
                "extensionFrs",
                "extensionNls",
                "faxNumber",
                "firstname",
                "lang",
                "lastname",
                "legalForm",
                "phoneNumber",
                "resale",
                "state",
                "vatIdentificationCode",
                "whoisOptIn",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionEus:getRegistrationOwnerContactExtensionEus": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object",
            "required": [
                "europeanCitizenship"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFr:getRegistrationOwnerContactExtensionFr": {
            "properties": {
                "associationInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFrAssociationInfo:getRegistrationOwnerContactExtensionFrAssociationInfo"
                    },
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFrCodeAuthAfnicInfo:getRegistrationOwnerContactExtensionFrCodeAuthAfnicInfo"
                    },
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFrDunsInfo:getRegistrationOwnerContactExtensionFrDunsInfo"
                    },
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFrIndividualInfo:getRegistrationOwnerContactExtensionFrIndividualInfo"
                    },
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationOwnerContactExtensionFrTrademarkInfo:getRegistrationOwnerContactExtensionFrTrademarkInfo"
                    },
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "associationInfos",
                "codeAuthAfnicInfos",
                "dunsInfos",
                "individualInfos",
                "mode",
                "trademarkInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFrAssociationInfo:getRegistrationOwnerContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object",
            "required": [
                "publicationJo",
                "publicationJoPage"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFrCodeAuthAfnicInfo:getRegistrationOwnerContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "codeAuthAfnic"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFrDunsInfo:getRegistrationOwnerContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "dunsId",
                "localId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFrIndividualInfo:getRegistrationOwnerContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object",
            "required": [
                "whoisOptIn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationOwnerContactExtensionFrTrademarkInfo:getRegistrationOwnerContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "trademarkInpi"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContact:getRegistrationTechnicalContact": {
            "properties": {
                "addressLine1": {
                    "type": "string",
                    "description": "Primary address line for the contact.\n"
                },
                "addressLine2": {
                    "type": "string",
                    "description": "Secondary address line for the contact (optional).\n"
                },
                "city": {
                    "type": "string",
                    "description": "City of the contact's address.\n"
                },
                "companyIdentificationCode": {
                    "type": "string",
                    "description": "Company identification code (e.g., SIREN/SIRET in France) for the contact.\n"
                },
                "companyName": {
                    "type": "string",
                    "description": "Name of the company associated with the contact (if applicable).\n"
                },
                "country": {
                    "type": "string",
                    "description": "Country code of the contact's address (ISO format).\n"
                },
                "email": {
                    "type": "string",
                    "description": "Primary email address of the contact.\n"
                },
                "emailAlt": {
                    "type": "string",
                    "description": "Alternative email address for the contact.\n"
                },
                "extensionEus": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionEus:getRegistrationTechnicalContactExtensionEus"
                    },
                    "description": "Details specific to European domain extensions.\n"
                },
                "extensionFrs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFr:getRegistrationTechnicalContactExtensionFr"
                    },
                    "description": "Details specific to French domain extensions.\n"
                },
                "extensionNls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Extension details specific to Dutch domain registrations.\n"
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number for the contact (if available).\n"
                },
                "firstname": {
                    "type": "string",
                    "description": "First name of the contact.\n"
                },
                "lang": {
                    "type": "string",
                    "description": "Preferred language of the contact (e.g., 'en_US', 'fr_FR').\n"
                },
                "lastname": {
                    "type": "string",
                    "description": "Last name of the contact.\n"
                },
                "legalForm": {
                    "type": "string",
                    "description": "Legal form of the contact (e.g., 'individual' or 'organization').\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Primary phone number of the contact.\n"
                },
                "resale": {
                    "type": "boolean",
                    "description": "Indicates if the contact is used for resale purposes.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State or region of the contact.\n"
                },
                "vatIdentificationCode": {
                    "type": "string",
                    "description": "VAT identification code of the contact, if applicable.\n"
                },
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Indicates whether the contact has opted into WHOIS publishing.\n"
                },
                "zip": {
                    "type": "string",
                    "description": "Postal code of the contact's address.\n"
                }
            },
            "type": "object",
            "required": [
                "addressLine1",
                "addressLine2",
                "city",
                "companyIdentificationCode",
                "companyName",
                "country",
                "email",
                "emailAlt",
                "extensionEus",
                "extensionFrs",
                "extensionNls",
                "faxNumber",
                "firstname",
                "lang",
                "lastname",
                "legalForm",
                "phoneNumber",
                "resale",
                "state",
                "vatIdentificationCode",
                "whoisOptIn",
                "zip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionEus:getRegistrationTechnicalContactExtensionEus": {
            "properties": {
                "europeanCitizenship": {
                    "type": "string",
                    "description": "Indicates the European citizenship of the contact.\n"
                }
            },
            "type": "object",
            "required": [
                "europeanCitizenship"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFr:getRegistrationTechnicalContactExtensionFr": {
            "properties": {
                "associationInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFrAssociationInfo:getRegistrationTechnicalContactExtensionFrAssociationInfo"
                    },
                    "description": "Association-specific information for the domain (French extension).\n"
                },
                "codeAuthAfnicInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo:getRegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo"
                    },
                    "description": "AFNIC authorization information for the contact (French extension).\n"
                },
                "dunsInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFrDunsInfo:getRegistrationTechnicalContactExtensionFrDunsInfo"
                    },
                    "description": "DUNS information for the domain owner (specific to French domains).\n"
                },
                "individualInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFrIndividualInfo:getRegistrationTechnicalContactExtensionFrIndividualInfo"
                    },
                    "description": "Information about the individual registration for French domains.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Mode of the French extension (e.g., 'individual', 'duns', 'association', etc.).\n"
                },
                "trademarkInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/getRegistrationTechnicalContactExtensionFrTrademarkInfo:getRegistrationTechnicalContactExtensionFrTrademarkInfo"
                    },
                    "description": "Trademark-related information for the domain (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "associationInfos",
                "codeAuthAfnicInfos",
                "dunsInfos",
                "individualInfos",
                "mode",
                "trademarkInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFrAssociationInfo:getRegistrationTechnicalContactExtensionFrAssociationInfo": {
            "properties": {
                "publicationJo": {
                    "type": "string",
                    "description": "Publication date in the Official Journal (RFC3339 format) for association information.\n"
                },
                "publicationJoPage": {
                    "type": "integer",
                    "description": "Page number of the publication in the Official Journal for association information.\n"
                }
            },
            "type": "object",
            "required": [
                "publicationJo",
                "publicationJoPage"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo:getRegistrationTechnicalContactExtensionFrCodeAuthAfnicInfo": {
            "properties": {
                "codeAuthAfnic": {
                    "type": "string",
                    "description": "AFNIC authorization code for the contact (specific to French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "codeAuthAfnic"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFrDunsInfo:getRegistrationTechnicalContactExtensionFrDunsInfo": {
            "properties": {
                "dunsId": {
                    "type": "string",
                    "description": "DUNS ID associated with the domain owner (for French domains).\n"
                },
                "localId": {
                    "type": "string",
                    "description": "Local identifier of the domain owner (for French domains).\n"
                }
            },
            "type": "object",
            "required": [
                "dunsId",
                "localId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFrIndividualInfo:getRegistrationTechnicalContactExtensionFrIndividualInfo": {
            "properties": {
                "whoisOptIn": {
                    "type": "boolean",
                    "description": "Whether the individual contact has opted into WHOIS publishing.\n"
                }
            },
            "type": "object",
            "required": [
                "whoisOptIn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:domain/getRegistrationTechnicalContactExtensionFrTrademarkInfo:getRegistrationTechnicalContactExtensionFrTrademarkInfo": {
            "properties": {
                "trademarkInpi": {
                    "type": "string",
                    "description": "Trademark information from INPI (French extension).\n"
                }
            },
            "type": "object",
            "required": [
                "trademarkInpi"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/BackendStageLbBackendConfig:BackendStageLbBackendConfig": {
            "properties": {
                "lbConfig": {
                    "$ref": "#/types/scaleway:edgeservices/BackendStageLbBackendConfigLbConfig:BackendStageLbBackendConfigLbConfig",
                    "description": "The Load Balancer config.\n"
                }
            },
            "type": "object"
        },
        "scaleway:edgeservices/BackendStageLbBackendConfigLbConfig:BackendStageLbBackendConfigLbConfig": {
            "properties": {
                "domainName": {
                    "type": "string",
                    "description": "The Fully Qualified Domain Name (in the format subdomain.example.com) to use in HTTP requests sent towards your Load Balancer.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the frontend.\n"
                },
                "hasWebsocket": {
                    "type": "boolean",
                    "description": "Defines whether to forward websocket requests to the load balancer.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "isSsl": {
                    "type": "boolean",
                    "description": "Defines whether the Load Balancer's frontend handles SSL connections.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "scaleway:edgeservices/BackendStageS3BackendConfig:BackendStageS3BackendConfig": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Bucket.\n"
                },
                "bucketRegion": {
                    "type": "string",
                    "description": "The region of the Bucket.\n"
                },
                "isWebsite": {
                    "type": "boolean",
                    "description": "Defines whether the bucket website feature is enabled.\n"
                }
            },
            "type": "object"
        },
        "scaleway:edgeservices/CacheStagePurgeRequest:CacheStagePurgeRequest": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Defines whether to purge all content.\n"
                },
                "assets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of asserts to purge.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The pipeline ID in which the purge request will be created.\n"
                }
            },
            "type": "object"
        },
        "scaleway:edgeservices/RouteStageRule:RouteStageRule": {
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage that requests matching the rule should be forwarded to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e within the same rule.\n"
                },
                "ruleHttpMatch": {
                    "$ref": "#/types/scaleway:edgeservices/RouteStageRuleRuleHttpMatch:RouteStageRuleRuleHttpMatch",
                    "description": "The rule condition to be matched. Requests matching the condition defined here will be forwarded to the stage specified by \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e. Requests that do not match will be checked by the next rule's condition.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage that requests matching the rule should be forwarded to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e within the same rule.\n"
                }
            },
            "type": "object"
        },
        "scaleway:edgeservices/RouteStageRuleRuleHttpMatch:RouteStageRuleRuleHttpMatch": {
            "properties": {
                "hostFilter": {
                    "$ref": "#/types/scaleway:edgeservices/RouteStageRuleRuleHttpMatchHostFilter:RouteStageRuleRuleHttpMatchHostFilter",
                    "description": "Host to filter for. A request whose host matches the given filter will be considered to match the rule. All hosts will match if none is provided.\n"
                },
                "methodFilters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "HTTP methods to filter for. A request using any of these methods will be considered to match the rule. Possible values are \u003cspan pulumi-lang-nodejs=\"`get`\" pulumi-lang-dotnet=\"`Get`\" pulumi-lang-go=\"`get`\" pulumi-lang-python=\"`get`\" pulumi-lang-yaml=\"`get`\" pulumi-lang-java=\"`get`\"\u003e`get`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`post`\" pulumi-lang-dotnet=\"`Post`\" pulumi-lang-go=\"`post`\" pulumi-lang-python=\"`post`\" pulumi-lang-yaml=\"`post`\" pulumi-lang-java=\"`post`\"\u003e`post`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`put`\" pulumi-lang-dotnet=\"`Put`\" pulumi-lang-go=\"`put`\" pulumi-lang-python=\"`put`\" pulumi-lang-yaml=\"`put`\" pulumi-lang-java=\"`put`\"\u003e`put`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`patch`\" pulumi-lang-dotnet=\"`Patch`\" pulumi-lang-go=\"`patch`\" pulumi-lang-python=\"`patch`\" pulumi-lang-yaml=\"`patch`\" pulumi-lang-java=\"`patch`\"\u003e`patch`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`head`\" pulumi-lang-dotnet=\"`Head`\" pulumi-lang-go=\"`head`\" pulumi-lang-python=\"`head`\" pulumi-lang-yaml=\"`head`\" pulumi-lang-java=\"`head`\"\u003e`head`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e. All methods will match if none is provided.\n"
                },
                "pathFilter": {
                    "$ref": "#/types/scaleway:edgeservices/RouteStageRuleRuleHttpMatchPathFilter:RouteStageRuleRuleHttpMatchPathFilter",
                    "description": "HTTP URL path to filter for. A request whose path matches the given filter will be considered to match the rule. All paths will match if none is provided.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "methodFilters"
                    ]
                }
            }
        },
        "scaleway:edgeservices/RouteStageRuleRuleHttpMatchHostFilter:RouteStageRuleRuleHttpMatchHostFilter": {
            "properties": {
                "hostFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the host. Use the \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e type.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the host.\n"
                }
            },
            "type": "object",
            "required": [
                "hostFilterType",
                "value"
            ]
        },
        "scaleway:edgeservices/RouteStageRuleRuleHttpMatchPathFilter:RouteStageRuleRuleHttpMatchPathFilter": {
            "properties": {
                "pathFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the HTTP URL path. For now, all path filters must be written in regex and use the \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e type.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the HTTP URL path.\n"
                }
            },
            "type": "object",
            "required": [
                "pathFilterType",
                "value"
            ]
        },
        "scaleway:edgeservices/TlsStageSecret:TlsStageSecret": {
            "properties": {
                "region": {
                    "type": "string",
                    "description": "The region of the secret.\n",
                    "willReplaceOnChanges": true
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the Secret\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secretId"
                    ]
                }
            }
        },
        "scaleway:edgeservices/getBackendStageLbBackendConfig:getBackendStageLbBackendConfig": {
            "properties": {
                "lbConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/getBackendStageLbBackendConfigLbConfig:getBackendStageLbBackendConfigLbConfig"
                    },
                    "description": "The Load Balancer configuration\n"
                }
            },
            "type": "object",
            "required": [
                "lbConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getBackendStageLbBackendConfigLbConfig:getBackendStageLbBackendConfigLbConfig": {
            "properties": {
                "domainName": {
                    "type": "string",
                    "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to use in HTTP requests sent towards your Load Balancer\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "ID of the frontend linked to the Load Balancer\n"
                },
                "hasWebsocket": {
                    "type": "boolean",
                    "description": "Defines whether to forward websocket requests to the load balancer\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the Load Balancer\n"
                },
                "isSsl": {
                    "type": "boolean",
                    "description": "Defines whether the Load Balancer's frontend handles SSL connections\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone you want to attach the resource to\n"
                }
            },
            "type": "object",
            "required": [
                "domainName",
                "frontendId",
                "hasWebsocket",
                "id",
                "isSsl",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getBackendStageS3BackendConfig:getBackendStageS3BackendConfig": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "Filter by S3 bucket name.\n"
                },
                "bucketRegion": {
                    "type": "string",
                    "description": "Filter by S3 bucket region.\n"
                },
                "isWebsite": {
                    "type": "boolean",
                    "description": "Defines whether the bucket website feature is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "bucketName",
                "bucketRegion",
                "isWebsite"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getCacheStagePurgeRequest:getCacheStagePurgeRequest": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Defines whether to purge all content\n"
                },
                "assets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of asserts to purge\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                }
            },
            "type": "object",
            "required": [
                "all",
                "assets",
                "pipelineId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getRouteStageRule:getRouteStageRule": {
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "ID of the backend stage that requests matching the rule should be forwarded to\n"
                },
                "ruleHttpMatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/getRouteStageRuleRuleHttpMatch:getRouteStageRuleRuleHttpMatch"
                    },
                    "description": "Rule condition to be matched. Requests matching the condition defined here will be directly forwarded to the backend specified by the \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e field. Requests that do not match will be checked by the next rule's condition\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "ID of the WAF stage that requests matching the rule should be forwarded to\n"
                }
            },
            "type": "object",
            "required": [
                "backendStageId",
                "ruleHttpMatches",
                "wafStageId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getRouteStageRuleRuleHttpMatch:getRouteStageRuleRuleHttpMatch": {
            "properties": {
                "hostFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/getRouteStageRuleRuleHttpMatchHostFilter:getRouteStageRuleRuleHttpMatchHostFilter"
                    },
                    "description": "Host to filter for. A request whose host matches the given filter will be considered to match the rule. All hosts will match if none is provided\n"
                },
                "methodFilters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "HTTP methods to filter for. A request using any of these methods will be considered to match the rule. Possible values are \u003cspan pulumi-lang-nodejs=\"`get`\" pulumi-lang-dotnet=\"`Get`\" pulumi-lang-go=\"`get`\" pulumi-lang-python=\"`get`\" pulumi-lang-yaml=\"`get`\" pulumi-lang-java=\"`get`\"\u003e`get`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`post`\" pulumi-lang-dotnet=\"`Post`\" pulumi-lang-go=\"`post`\" pulumi-lang-python=\"`post`\" pulumi-lang-yaml=\"`post`\" pulumi-lang-java=\"`post`\"\u003e`post`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`put`\" pulumi-lang-dotnet=\"`Put`\" pulumi-lang-go=\"`put`\" pulumi-lang-python=\"`put`\" pulumi-lang-yaml=\"`put`\" pulumi-lang-java=\"`put`\"\u003e`put`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`patch`\" pulumi-lang-dotnet=\"`Patch`\" pulumi-lang-go=\"`patch`\" pulumi-lang-python=\"`patch`\" pulumi-lang-yaml=\"`patch`\" pulumi-lang-java=\"`patch`\"\u003e`patch`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`head`\" pulumi-lang-dotnet=\"`Head`\" pulumi-lang-go=\"`head`\" pulumi-lang-python=\"`head`\" pulumi-lang-yaml=\"`head`\" pulumi-lang-java=\"`head`\"\u003e`head`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e. All methods will match if none is provided\n"
                },
                "pathFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/getRouteStageRuleRuleHttpMatchPathFilter:getRouteStageRuleRuleHttpMatchPathFilter"
                    },
                    "description": "HTTP URL path to filter for. A request whose path matches the given filter will be considered to match the rule. All paths will match if none is provided\n"
                }
            },
            "type": "object",
            "required": [
                "hostFilters",
                "methodFilters",
                "pathFilters"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getRouteStageRuleRuleHttpMatchHostFilter:getRouteStageRuleRuleHttpMatchHostFilter": {
            "properties": {
                "hostFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the host path\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the host path\n"
                }
            },
            "type": "object",
            "required": [
                "hostFilterType",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getRouteStageRuleRuleHttpMatchPathFilter:getRouteStageRuleRuleHttpMatchPathFilter": {
            "properties": {
                "pathFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the HTTP URL path. For now, all path filters must be written in regex and use the \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e type\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the HTTP URL path\n"
                }
            },
            "type": "object",
            "required": [
                "pathFilterType",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:edgeservices/getTlsStageSecret:getTlsStageSecret": {
            "properties": {
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "Secret ID to filter for.\n"
                }
            },
            "type": "object",
            "required": [
                "region",
                "secretId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/ServerIp:ServerIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/ServerIpv4:ServerIpv4": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/ServerIpv6:ServerIpv6": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/ServerOption:ServerOption": {
            "properties": {
                "expiresAt": {
                    "type": "string",
                    "description": "The auto expiration date for compatible options\n"
                },
                "id": {
                    "type": "string",
                    "description": "The id of the option to enable. Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-options-list-options) to find the available options IDs.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expiresAt",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/ServerPrivateIp:ServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/ServerPrivateNetwork:ServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the private network.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The id of the private network to attach.\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPAM IP IDs to assign to the server in the requested private network.\n"
                },
                "mappingId": {
                    "type": "string",
                    "description": "The ID of the Server-to-Private Network mapping.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private network status.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the private network.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated to the private network.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "id",
                        "ipamIpIds",
                        "mappingId",
                        "status",
                        "updatedAt",
                        "vlan"
                    ]
                }
            }
        },
        "scaleway:elasticmetal/getIpsIp:getIpsIp": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the flexible IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The MAC address ID.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address of the flexible IP\n"
                },
                "macAddresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/getIpsIpMacAddress:getIpsIpMacAddress"
                    },
                    "description": "The MAC address of the Virtual MAC.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the IP is in.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is in.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of virtual MAC.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. IPs with these exact tags are listed.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "id",
                "ipAddress",
                "macAddresses",
                "organizationId",
                "projectId",
                "reverse",
                "status",
                "tags",
                "updatedAt",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getIpsIpMacAddress:getIpsIpMacAddress": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was created (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The MAC address ID.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the Virtual MAC.\n"
                },
                "macType": {
                    "type": "string",
                    "description": "The type of virtual MAC.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of virtual MAC.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "macAddress",
                "macType",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getOfferCpu:getOfferCpu": {
            "properties": {
                "coreCount": {
                    "type": "integer",
                    "description": "Number of core on this CPU.\n"
                },
                "frequency": {
                    "type": "integer",
                    "description": "Frequency of the memory in MHz.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "threadCount": {
                    "type": "integer",
                    "description": "Number of thread on this CPU.\n"
                }
            },
            "type": "object",
            "required": [
                "coreCount",
                "frequency",
                "name",
                "threadCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getOfferDisk:getOfferDisk": {
            "properties": {
                "capacity": {
                    "type": "integer",
                    "description": "Capacity of the memory in GB.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of memory.\n"
                }
            },
            "type": "object",
            "required": [
                "capacity",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getOfferMemory:getOfferMemory": {
            "properties": {
                "capacity": {
                    "type": "integer",
                    "description": "Capacity of the memory in GB.\n"
                },
                "frequency": {
                    "type": "integer",
                    "description": "Frequency of the memory in MHz.\n"
                },
                "isEcc": {
                    "type": "boolean",
                    "description": "True if error-correcting code is available on this memory.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of memory.\n"
                }
            },
            "type": "object",
            "required": [
                "capacity",
                "frequency",
                "isEcc",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerIp:getServerIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerIpv4:getServerIpv4": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerIpv6:getServerIpv6": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerOption:getServerOption": {
            "properties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Auto expire the option after this date\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name. Only one 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=\"`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 should be specified.\n"
                }
            },
            "type": "object",
            "required": [
                "expiresAt",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerPrivateIp:getServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:elasticmetal/getServerPrivateNetwork:getServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the private network\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPAM IP IDs to attach to the server\n"
                },
                "mappingId": {
                    "type": "string",
                    "description": "The ID of the Server-to-Private Network mapping\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private network status\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the private network\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated to the private network\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "ipamIpIds",
                "mappingId",
                "status",
                "updatedAt",
                "vlan"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:functions/TriggerNats:TriggerNats": {
            "properties": {
                "accountId": {
                    "type": "string",
                    "description": "unique identifier of the Messaging and Queuing NATS account.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "THe ID of the project that contains the Messaging and Queuing NATS account (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Messaging and Queuing NATS account is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "subject": {
                    "type": "string",
                    "description": "The subject to listen to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "subject"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "projectId",
                        "region",
                        "subject"
                    ]
                }
            }
        },
        "scaleway:functions/TriggerSqs:TriggerSqs": {
            "properties": {
                "namespaceId": {
                    "type": "string",
                    "description": "ID of the Messaging and Queuing namespace. This argument is deprecated.\n",
                    "deprecationMessage": "The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which SQS is enabled, (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "queue": {
                    "type": "string",
                    "description": "The name of the SQS queue.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where SQS is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "queue"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "projectId",
                        "queue",
                        "region"
                    ]
                }
            }
        },
        "scaleway:hosting/HostingCpanelUrl:HostingCpanelUrl": {
            "properties": {
                "dashboard": {
                    "type": "string",
                    "description": "The URL of the Dashboard.\n"
                },
                "webmail": {
                    "type": "string",
                    "description": "The URL of the Webmail interface.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dashboard",
                        "webmail"
                    ]
                }
            }
        },
        "scaleway:hosting/HostingNameServer:HostingNameServer": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the server\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Whether or not the webhosting is the default one\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "hostname",
                        "isDefault",
                        "status"
                    ]
                }
            }
        },
        "scaleway:hosting/HostingOption:HostingOption": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The option ID.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The option name.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name"
                    ]
                }
            }
        },
        "scaleway:hosting/HostingRecord:HostingRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The option name.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of DNS records associated with the webhosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time to live in seconds of the record\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the DNS record\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the DNS record\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "priority",
                        "status",
                        "ttl",
                        "type",
                        "value"
                    ]
                }
            }
        },
        "scaleway:hosting/getHostingCpanelUrl:getHostingCpanelUrl": {
            "properties": {
                "dashboard": {
                    "type": "string",
                    "description": "URL to connect to dashboard interface\n"
                },
                "webmail": {
                    "type": "string",
                    "description": "URL to connect to Webmail interface\n"
                }
            },
            "type": "object",
            "required": [
                "dashboard",
                "webmail"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getHostingNameServer:getHostingNameServer": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the server\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Whether or not the webhosting is the default one\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the nameserver\n"
                }
            },
            "type": "object",
            "required": [
                "hostname",
                "isDefault",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getHostingOption:getHostingOption": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the active option\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the option\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getHostingRecord:getHostingRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the DNS record\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of DNS records associated with the webhosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the hosting record\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time to live in seconds of the record\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the DNS record\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the DNS record\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "priority",
                "status",
                "ttl",
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getOfferOffer:getOfferOffer": {
            "properties": {
                "available": {
                    "type": "boolean",
                    "description": "Indicates if the offer is available.\n"
                },
                "billingOperationPath": {
                    "type": "string",
                    "description": "The billing operation identifier for the option.\n"
                },
                "controlPanelName": {
                    "type": "string",
                    "description": "The name of the control panel (e.g., Cpanel or Plesk).\n"
                },
                "endOfLife": {
                    "type": "boolean",
                    "description": "Indicates if the offer is deprecated or no longer supported.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the option.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:hosting/getOfferOfferOption:getOfferOfferOption"
                    },
                    "description": "A list of available options for the offer:\n"
                },
                "price": {
                    "type": "string",
                    "description": "The offer price.\n"
                },
                "quotaWarning": {
                    "type": "string",
                    "description": "Warning information regarding quota limitations for the option.\n"
                }
            },
            "type": "object",
            "required": [
                "available",
                "billingOperationPath",
                "controlPanelName",
                "endOfLife",
                "id",
                "name",
                "options",
                "price",
                "quotaWarning"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getOfferOfferOption:getOfferOfferOption": {
            "properties": {
                "billingOperationPath": {
                    "type": "string",
                    "description": "The billing operation identifier for the option.\n"
                },
                "currentValue": {
                    "type": "integer",
                    "description": "The current value set for the option.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the option.\n"
                },
                "maxValue": {
                    "type": "integer",
                    "description": "The maximum allowed value for the option.\n"
                },
                "minValue": {
                    "type": "integer",
                    "description": "The minimum value for the option.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "price": {
                    "type": "string",
                    "description": "The offer price.\n"
                },
                "quotaWarning": {
                    "type": "string",
                    "description": "Warning information regarding quota limitations for the option.\n"
                }
            },
            "type": "object",
            "required": [
                "billingOperationPath",
                "currentValue",
                "id",
                "maxValue",
                "minValue",
                "name",
                "price",
                "quotaWarning"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:hosting/getOfferProduct:getOfferProduct": {
            "properties": {
                "databasesQuota": {
                    "type": "integer",
                    "description": "The quota of databases.\n"
                },
                "emailAccountsQuota": {
                    "type": "integer",
                    "description": "The quota of email accounts.\n"
                },
                "emailStorageQuota": {
                    "type": "integer",
                    "description": "The quota of email storage.\n"
                },
                "hostingStorageQuota": {
                    "type": "integer",
                    "description": "The quota of hosting storage.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "option": {
                    "type": "boolean",
                    "description": "The product option.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "The capacity of the memory in GB.\n"
                },
                "supportIncluded": {
                    "type": "boolean",
                    "description": "If support is included.\n"
                },
                "vCpu": {
                    "type": "integer",
                    "description": "The number of cores.\n"
                }
            },
            "type": "object",
            "required": [
                "databasesQuota",
                "emailAccountsQuota",
                "emailStorageQuota",
                "hostingStorageQuota",
                "name",
                "option",
                "ram",
                "supportIncluded",
                "vCpu"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iam/PolicyRule:PolicyRule": {
            "properties": {
                "condition": {
                    "type": "string",
                    "description": "The condition of the rule.\n\n**_TIP:_** You can use the Scaleway CLI to list the permissions details. e.g:\n\n```shell\nscw iam permission-set list\n```\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "ID of organization scoped to the rule, this can be used to create a rule for all projects in an organization.\n"
                },
                "permissionSetNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of permission sets bind to the rule.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of project IDs scoped to the rule.\n\n\u003e **Important** One \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`projectIds`\" pulumi-lang-dotnet=\"`ProjectIds`\" pulumi-lang-go=\"`projectIds`\" pulumi-lang-python=\"`project_ids`\" pulumi-lang-yaml=\"`projectIds`\" pulumi-lang-java=\"`projectIds`\"\u003e`projectIds`\u003c/span\u003e must be set per rule.\n"
                }
            },
            "type": "object",
            "required": [
                "permissionSetNames"
            ]
        },
        "scaleway:iam/SamlServiceProvider:SamlServiceProvider": {
            "properties": {
                "assertionConsumerServiceUrl": {
                    "type": "string",
                    "description": "(Computed) The assertion consumer service URL of the Service Provider.\n"
                },
                "entityId": {
                    "type": "string",
                    "description": "(Computed) The entity ID of the Service Provider.\n"
                }
            },
            "type": "object",
            "required": [
                "assertionConsumerServiceUrl",
                "entityId"
            ]
        },
        "scaleway:iam/getPolicyRule:getPolicyRule": {
            "properties": {
                "condition": {
                    "type": "string",
                    "description": "The condition of the rule.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "ID of organization scoped to the rule.\n"
                },
                "permissionSetNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of permission sets bound to the rule.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of project IDs scoped to the rule.\n"
                }
            },
            "type": "object",
            "required": [
                "condition",
                "organizationId",
                "permissionSetNames",
                "projectIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iam/getSamlServiceProvider:getSamlServiceProvider": {
            "properties": {
                "assertionConsumerServiceUrl": {
                    "type": "string"
                },
                "entityId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "assertionConsumerServiceUrl",
                "entityId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/AppleSiliconServerPrivateIp:AppleSiliconServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/AppleSiliconServerPrivateNetwork:AppleSiliconServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the private network was created.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPAM IP IDs to attach to the server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the private network.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the private network was last updated.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated with the private network.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "id",
                        "ipamIpIds",
                        "status",
                        "updatedAt",
                        "vlan"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerIp:BaremetalServerIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerIpv4:BaremetalServerIpv4": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerIpv6:BaremetalServerIpv6": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse of the IPv6.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The type of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id",
                        "reverse",
                        "version"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerOption:BaremetalServerOption": {
            "properties": {
                "expiresAt": {
                    "type": "string",
                    "description": "The auto expiration date for compatible options\n"
                },
                "id": {
                    "type": "string",
                    "description": "The id of the option to enable. Use [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-options-list-options) to find the available options IDs.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expiresAt",
                        "id",
                        "name"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerPrivateIp:BaremetalServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IPv6.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv6.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/BaremetalServerPrivateNetwork:BaremetalServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the private network.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The id of the private network to attach.\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPAM IP IDs to assign to the server in the requested private network.\n"
                },
                "mappingId": {
                    "type": "string",
                    "description": "The ID of the Server-to-Private Network mapping.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private network status.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the private network.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated to the private network.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "id",
                        "ipamIpIds",
                        "mappingId",
                        "status",
                        "updatedAt",
                        "vlan"
                    ]
                }
            }
        },
        "scaleway:index/BlockSnapshotExport:BlockSnapshotExport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket where the QCOW file will be saved.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The desired key (path) for the QCOW file within the bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:index/BlockSnapshotImport:BlockSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket containing the QCOW file.\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "The key of the QCOW file within the bucket.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:index/CockpitAlertManagerContactPoint:CockpitAlertManagerContactPoint": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Email addresses for the alert receivers\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/CockpitEndpoint:CockpitEndpoint": {
            "properties": {
                "alertmanagerUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for the [Alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager).\n"
                },
                "grafanaUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for Grafana.\n"
                },
                "logsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [logs](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#logs) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "metricsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [metrics](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#metric) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "tracesUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [traces](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#traces) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "alertmanagerUrl",
                        "grafanaUrl",
                        "logsUrl",
                        "metricsUrl",
                        "tracesUrl"
                    ]
                }
            }
        },
        "scaleway:index/CockpitPushUrl:CockpitPushUrl": {
            "properties": {
                "pushLogsUrl": {
                    "type": "string",
                    "description": "Push URL for logs (Grafana Loki)\n"
                },
                "pushMetricsUrl": {
                    "type": "string",
                    "description": "Push URL for metrics (Grafana Mimir)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pushLogsUrl",
                        "pushMetricsUrl"
                    ]
                }
            }
        },
        "scaleway:index/CockpitTokenScopes:CockpitTokenScopes": {
            "properties": {
                "queryLogs": {
                    "type": "boolean",
                    "description": "Permission to query logs.\n",
                    "willReplaceOnChanges": true
                },
                "queryMetrics": {
                    "type": "boolean",
                    "description": "Permission to query metrics.\n",
                    "willReplaceOnChanges": true
                },
                "queryTraces": {
                    "type": "boolean",
                    "description": "Permission to query traces.\n",
                    "willReplaceOnChanges": true
                },
                "setupAlerts": {
                    "type": "boolean",
                    "description": "Permission to set up alerts.\n",
                    "willReplaceOnChanges": true
                },
                "setupLogsRules": {
                    "type": "boolean",
                    "description": "Permission to set up logs rules.\n",
                    "willReplaceOnChanges": true
                },
                "setupMetricsRules": {
                    "type": "boolean",
                    "description": "Permission to set up metrics rules.\n",
                    "willReplaceOnChanges": true
                },
                "writeLogs": {
                    "type": "boolean",
                    "description": "Permission to write logs.\n",
                    "willReplaceOnChanges": true
                },
                "writeMetrics": {
                    "type": "boolean",
                    "description": "Permission to write metrics.\n",
                    "willReplaceOnChanges": true
                },
                "writeTraces": {
                    "type": "boolean",
                    "description": "Permission to write traces.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "scaleway:index/ContainerHealthCheck:ContainerHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ContainerHealthCheckHttp:ContainerHealthCheckHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failureThreshold",
                        "https",
                        "interval",
                        "tcp"
                    ]
                }
            }
        },
        "scaleway:index/ContainerHealthCheckHttp:ContainerHealthCheckHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "path"
                    ]
                }
            }
        },
        "scaleway:index/ContainerLivenessProbe:ContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "http": {
                    "$ref": "#/types/scaleway:index/ContainerLivenessProbeHttp:ContainerLivenessProbeHttp",
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "interval",
                "timeout"
            ]
        },
        "scaleway:index/ContainerLivenessProbeHttp:ContainerLivenessProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "scaleway:index/ContainerScalingOption:ContainerScalingOption": {
            "properties": {
                "concurrentRequestsThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the number of concurrent requests being processed per container instance.\n"
                },
                "cpuUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the CPU usage of a container instance.\n"
                },
                "memoryUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the memory usage of a container instance.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/ContainerStartupProbe:ContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "http": {
                    "$ref": "#/types/scaleway:index/ContainerStartupProbeHttp:ContainerStartupProbeHttp",
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation).\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "Perform TCP check on the container\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "interval",
                "timeout"
            ]
        },
        "scaleway:index/ContainerStartupProbeHttp:ContainerStartupProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "scaleway:index/ContainerTriggerCron:ContainerTriggerCron": {
            "properties": {
                "body": {
                    "type": "string",
                    "description": "Body to send to the container when the trigger is invoked.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional headers to send to the container when the trigger is invoked.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "UNIX cron schedule to run job (e.g., \"* * * * *\").\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "Timezone for the cron schedule, in tz database format (e.g., \"Europe/Paris\").\n"
                }
            },
            "type": "object",
            "required": [
                "schedule",
                "timezone"
            ]
        },
        "scaleway:index/ContainerTriggerDestinationConfig:ContainerTriggerDestinationConfig": {
            "properties": {
                "httpMethod": {
                    "type": "string",
                    "description": "The HTTP method to use when sending the request (e.g., get, post, put, patch, delete).\n"
                },
                "httpPath": {
                    "type": "string",
                    "description": "The HTTP path to send the request to (e.g., \"/my-webhook-endpoint\").\n"
                }
            },
            "type": "object",
            "required": [
                "httpMethod",
                "httpPath"
            ]
        },
        "scaleway:index/ContainerTriggerNats:ContainerTriggerNats": {
            "properties": {
                "accountId": {
                    "type": "string",
                    "description": "unique identifier of the Messaging and Queuing NATS account  .\n"
                },
                "credentialsFileContent": {
                    "type": "string",
                    "description": "The content of the NATS credentials file that will be used to authenticate with the NATS server and subscribe to the specified subject.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that contains the Messaging and Queuing NATS account (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Messaging and Queuing NATS account is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "serverUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of URLs of the NATS server (e.g., \"nats://nats.mnq.fr-par.scaleway.com:4222\").\n"
                },
                "subject": {
                    "type": "string",
                    "description": "NATS subject to subscribe to (e.g., \\\"my-subject\\\").\"\n"
                }
            },
            "type": "object",
            "required": [
                "credentialsFileContent",
                "serverUrls",
                "subject"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "credentialsFileContent",
                        "projectId",
                        "region",
                        "serverUrls",
                        "subject"
                    ]
                }
            }
        },
        "scaleway:index/ContainerTriggerSqs:ContainerTriggerSqs": {
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key for accessing the SQS queue.\n",
                    "secret": true
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint URL to use to access SQS (e.g., \"https://sqs.mnq.fr-par.scaleway.com\").\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which SQS is enabled, (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "queue": {
                    "type": "string",
                    "description": "The name of the SQS queue.  This argument is no longer supported.\n",
                    "deprecationMessage": "This field is no longer supported, please use\u003cspan pulumi-lang-nodejs=\" queueUrl \" pulumi-lang-dotnet=\" QueueUrl \" pulumi-lang-go=\" queueUrl \" pulumi-lang-python=\" queue_url \" pulumi-lang-yaml=\" queueUrl \" pulumi-lang-java=\" queueUrl \"\u003e queueUrl \u003c/span\u003einstead to identify the queue.",
                    "willReplaceOnChanges": true
                },
                "queueUrl": {
                    "type": "string",
                    "description": "The URL of the SQS queue to monitor for messages.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where SQS is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key for accessing the SQS queue.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "accessKey",
                "endpoint",
                "queueUrl",
                "secretKey"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "accessKey",
                        "endpoint",
                        "projectId",
                        "queueUrl",
                        "region",
                        "secretKey"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseAclAclRule:DatabaseAclAclRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A text describing this rule. Default description: `IP allowed`\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "ip"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstanceLoadBalancer:DatabaseInstanceLoadBalancer": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstanceLogsPolicy:DatabaseInstanceLogsPolicy": {
            "properties": {
                "maxAgeRetention": {
                    "type": "integer",
                    "description": "The max age (in days) of remote logs to keep on the Database Instance\n"
                },
                "totalDiskRetention": {
                    "type": "integer",
                    "description": "The max disk size of remote logs to keep on the Database Instance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxAgeRetention",
                        "totalDiskRetention"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstancePrivateIp:DatabaseInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Version ID to use in upgrade requests.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstancePrivateNetwork:DatabaseInstancePrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "Whether or not the private network endpoint should be configured with IPAM\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "ipNet": {
                    "type": "string",
                    "description": "The IP with the given mask within the private subnet\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone you want to attach the resource to\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIpam",
                        "endpointId",
                        "hostname",
                        "ip",
                        "ipNet",
                        "name",
                        "pnId",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstanceReadReplica:DatabaseInstanceReadReplica": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "IPv4 address on the network.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port in the Private Network.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseInstanceUpgradableVersion:DatabaseInstanceUpgradableVersion": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Version ID to use in upgrade requests.\n"
                },
                "minorVersion": {
                    "type": "string",
                    "description": "Minor version string (e.g., `15.5.0`).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version string (e.g., `15.5`).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "minorVersion",
                        "name",
                        "version"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseReadReplicaDirectAccess:DatabaseReadReplicaDirectAccess": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint of the Read Replica.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint. Only one of IP and hostname may be set.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the endpoint (IP address). Only one of IP and hostname may be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/DatabaseReadReplicaPrivateNetwork:DatabaseReadReplicaPrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "If true, the IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n\n\u003e **Important:** One of \u003cspan pulumi-lang-nodejs=\"`serviceIp`\" pulumi-lang-dotnet=\"`ServiceIp`\" pulumi-lang-go=\"`serviceIp`\" pulumi-lang-python=\"`service_ip`\" pulumi-lang-yaml=\"`serviceIp`\" pulumi-lang-java=\"`serviceIp`\"\u003e`serviceIp`\u003c/span\u003e or `enable_ipam=true` must be set.\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint of the Read Replica.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint. Only one of IP and hostname may be set.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the endpoint (IP address). Only one of IP and hostname may be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "UUID of the Private Netork to be connected to the Read Replica.\n"
                },
                "serviceIp": {
                    "type": "string",
                    "description": "The IP network address within the private subnet. This must be an IPv4 address with a CIDR notation. If not set, The IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "Private network zone\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIpam",
                        "endpointId",
                        "hostname",
                        "ip",
                        "name",
                        "port",
                        "privateNetworkId",
                        "serviceIp",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:index/DomainRecordGeoIp:DomainRecordGeoIp": {
            "properties": {
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DomainRecordGeoIpMatch:DomainRecordGeoIpMatch"
                    },
                    "description": "The list of matches\n"
                }
            },
            "type": "object",
            "required": [
                "matches"
            ]
        },
        "scaleway:index/DomainRecordGeoIpMatch:DomainRecordGeoIpMatch": {
            "properties": {
                "continents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of continents (eg: EU for Europe, NA for North America, AS for Asia...). List of all continents code: https://api.scaleway.com/domain-private/v2beta1/continents\n"
                },
                "countries": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of countries (eg: FR for France, US for the United States, GB for Great Britain...). List of all countries code: https://api.scaleway.com/domain-private/v2beta1/countries\n"
                },
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                }
            },
            "type": "object",
            "required": [
                "data"
            ]
        },
        "scaleway:index/DomainRecordHttpService:DomainRecordHttpService": {
            "properties": {
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPs to check\n"
                },
                "mustContain": {
                    "type": "string",
                    "description": "Text to search\n"
                },
                "strategy": {
                    "type": "string",
                    "description": "Strategy to return an IP from the IPs list\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL to match the\u003cspan pulumi-lang-nodejs=\" mustContain \" pulumi-lang-dotnet=\" MustContain \" pulumi-lang-go=\" mustContain \" pulumi-lang-python=\" must_contain \" pulumi-lang-yaml=\" mustContain \" pulumi-lang-java=\" mustContain \"\u003e mustContain \u003c/span\u003etext to validate an IP\n"
                },
                "userAgent": {
                    "type": "string",
                    "description": "User-agent used when checking the URL\n"
                }
            },
            "type": "object",
            "required": [
                "ips",
                "mustContain",
                "strategy",
                "url"
            ]
        },
        "scaleway:index/DomainRecordView:DomainRecordView": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet of the view\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "subnet"
            ]
        },
        "scaleway:index/DomainRecordWeighted:DomainRecordWeighted": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "The weighted IP\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "weight"
            ]
        },
        "scaleway:index/EdgeServicesBackendStageLbBackendConfig:EdgeServicesBackendStageLbBackendConfig": {
            "properties": {
                "lbConfig": {
                    "$ref": "#/types/scaleway:index/EdgeServicesBackendStageLbBackendConfigLbConfig:EdgeServicesBackendStageLbBackendConfigLbConfig",
                    "description": "The Load Balancer config.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/EdgeServicesBackendStageLbBackendConfigLbConfig:EdgeServicesBackendStageLbBackendConfigLbConfig": {
            "properties": {
                "domainName": {
                    "type": "string",
                    "description": "The Fully Qualified Domain Name (in the format subdomain.example.com) to use in HTTP requests sent towards your Load Balancer.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the frontend.\n"
                },
                "hasWebsocket": {
                    "type": "boolean",
                    "description": "Defines whether to forward websocket requests to the load balancer.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "isSsl": {
                    "type": "boolean",
                    "description": "Defines whether the Load Balancer's frontend handles SSL connections.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "scaleway:index/EdgeServicesBackendStageS3BackendConfig:EdgeServicesBackendStageS3BackendConfig": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Bucket.\n"
                },
                "bucketRegion": {
                    "type": "string",
                    "description": "The region of the Bucket.\n"
                },
                "isWebsite": {
                    "type": "boolean",
                    "description": "Defines whether the bucket website feature is enabled.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/EdgeServicesCacheStagePurgeRequest:EdgeServicesCacheStagePurgeRequest": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Defines whether to purge all content.\n"
                },
                "assets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of asserts to purge.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The pipeline ID in which the purge request will be created.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/EdgeServicesRouteStageRule:EdgeServicesRouteStageRule": {
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage that requests matching the rule should be forwarded to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e within the same rule.\n"
                },
                "ruleHttpMatch": {
                    "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatch:EdgeServicesRouteStageRuleRuleHttpMatch",
                    "description": "The rule condition to be matched. Requests matching the condition defined here will be forwarded to the stage specified by \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e. Requests that do not match will be checked by the next rule's condition.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage that requests matching the rule should be forwarded to. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e within the same rule.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatch:EdgeServicesRouteStageRuleRuleHttpMatch": {
            "properties": {
                "hostFilter": {
                    "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatchHostFilter:EdgeServicesRouteStageRuleRuleHttpMatchHostFilter",
                    "description": "Host to filter for. A request whose host matches the given filter will be considered to match the rule. All hosts will match if none is provided.\n"
                },
                "methodFilters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "HTTP methods to filter for. A request using any of these methods will be considered to match the rule. Possible values are \u003cspan pulumi-lang-nodejs=\"`get`\" pulumi-lang-dotnet=\"`Get`\" pulumi-lang-go=\"`get`\" pulumi-lang-python=\"`get`\" pulumi-lang-yaml=\"`get`\" pulumi-lang-java=\"`get`\"\u003e`get`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`post`\" pulumi-lang-dotnet=\"`Post`\" pulumi-lang-go=\"`post`\" pulumi-lang-python=\"`post`\" pulumi-lang-yaml=\"`post`\" pulumi-lang-java=\"`post`\"\u003e`post`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`put`\" pulumi-lang-dotnet=\"`Put`\" pulumi-lang-go=\"`put`\" pulumi-lang-python=\"`put`\" pulumi-lang-yaml=\"`put`\" pulumi-lang-java=\"`put`\"\u003e`put`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`patch`\" pulumi-lang-dotnet=\"`Patch`\" pulumi-lang-go=\"`patch`\" pulumi-lang-python=\"`patch`\" pulumi-lang-yaml=\"`patch`\" pulumi-lang-java=\"`patch`\"\u003e`patch`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`head`\" pulumi-lang-dotnet=\"`Head`\" pulumi-lang-go=\"`head`\" pulumi-lang-python=\"`head`\" pulumi-lang-yaml=\"`head`\" pulumi-lang-java=\"`head`\"\u003e`head`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e. All methods will match if none is provided.\n"
                },
                "pathFilter": {
                    "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatchPathFilter:EdgeServicesRouteStageRuleRuleHttpMatchPathFilter",
                    "description": "HTTP URL path to filter for. A request whose path matches the given filter will be considered to match the rule. All paths will match if none is provided.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "methodFilters"
                    ]
                }
            }
        },
        "scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatchHostFilter:EdgeServicesRouteStageRuleRuleHttpMatchHostFilter": {
            "properties": {
                "hostFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the host. Use the \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e type.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the host.\n"
                }
            },
            "type": "object",
            "required": [
                "hostFilterType",
                "value"
            ]
        },
        "scaleway:index/EdgeServicesRouteStageRuleRuleHttpMatchPathFilter:EdgeServicesRouteStageRuleRuleHttpMatchPathFilter": {
            "properties": {
                "pathFilterType": {
                    "type": "string",
                    "description": "The type of filter to match for the HTTP URL path. For now, all path filters must be written in regex and use the \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e type.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to be matched for the HTTP URL path.\n"
                }
            },
            "type": "object",
            "required": [
                "pathFilterType",
                "value"
            ]
        },
        "scaleway:index/EdgeServicesTlsStageSecret:EdgeServicesTlsStageSecret": {
            "properties": {
                "region": {
                    "type": "string",
                    "description": "The region of the secret.\n",
                    "willReplaceOnChanges": true
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the Secret\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secretId"
                    ]
                }
            }
        },
        "scaleway:index/FunctionTriggerNats:FunctionTriggerNats": {
            "properties": {
                "accountId": {
                    "type": "string",
                    "description": "unique identifier of the Messaging and Queuing NATS account.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "THe ID of the project that contains the Messaging and Queuing NATS account (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Messaging and Queuing NATS account is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                },
                "subject": {
                    "type": "string",
                    "description": "The subject to listen to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "subject"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "projectId",
                        "region",
                        "subject"
                    ]
                }
            }
        },
        "scaleway:index/FunctionTriggerSqs:FunctionTriggerSqs": {
            "properties": {
                "namespaceId": {
                    "type": "string",
                    "description": "ID of the Messaging and Queuing namespace. This argument is deprecated.\n",
                    "deprecationMessage": "The 'namespace_id' field is deprecated and will be removed in the next major version. It is no longer necessary to specify it"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project in which SQS is enabled, (defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "queue": {
                    "type": "string",
                    "description": "The name of the SQS queue.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Region where SQS is enabled (defaults to provider \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",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "queue"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "projectId",
                        "queue",
                        "region"
                    ]
                }
            }
        },
        "scaleway:index/IamPolicyRule:IamPolicyRule": {
            "properties": {
                "condition": {
                    "type": "string",
                    "description": "The condition of the rule.\n\n**_TIP:_** You can use the Scaleway CLI to list the permissions details. e.g:\n\n```shell\nscw iam permission-set list\n```\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "ID of organization scoped to the rule, this can be used to create a rule for all projects in an organization.\n"
                },
                "permissionSetNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of permission sets bind to the rule.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of project IDs scoped to the rule.\n\n\u003e **Important** One \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`projectIds`\" pulumi-lang-dotnet=\"`ProjectIds`\" pulumi-lang-go=\"`projectIds`\" pulumi-lang-python=\"`project_ids`\" pulumi-lang-yaml=\"`projectIds`\" pulumi-lang-java=\"`projectIds`\"\u003e`projectIds`\u003c/span\u003e must be set per rule.\n"
                }
            },
            "type": "object",
            "required": [
                "permissionSetNames"
            ]
        },
        "scaleway:index/InferenceDeploymentPrivateEndpoint:InferenceDeploymentPrivateEndpoint": {
            "properties": {
                "disableAuth": {
                    "type": "boolean",
                    "description": "Disable the authentication on the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network to use.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Optional) The URL of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "url"
                    ]
                }
            }
        },
        "scaleway:index/InferenceDeploymentPrivateIp:InferenceDeploymentPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/InferenceDeploymentPublicEndpoint:InferenceDeploymentPublicEndpoint": {
            "properties": {
                "disableAuth": {
                    "type": "boolean",
                    "description": "Disable the authentication on the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                },
                "isEnabled": {
                    "type": "boolean",
                    "description": "Enable or disable public endpoint.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Optional) The URL of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "url"
                    ]
                }
            }
        },
        "scaleway:index/InstanceImageAdditionalVolume:InstanceImageAdditionalVolume": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server containing the volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "server": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Description of the server containing the volume (in case the image is a backup from a server).\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume, possible values are \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sbsSnapshot`\" pulumi-lang-dotnet=\"`SbsSnapshot`\" pulumi-lang-go=\"`sbsSnapshot`\" pulumi-lang-python=\"`sbs_snapshot`\" pulumi-lang-yaml=\"`sbsSnapshot`\" pulumi-lang-java=\"`sbsSnapshot`\"\u003e`sbsSnapshot`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "server",
                        "size",
                        "tags",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:index/InstanceImageRootVolume:InstanceImageRootVolume": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server containing the volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume, possible values are \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sbsSnapshot`\" pulumi-lang-dotnet=\"`SbsSnapshot`\" pulumi-lang-go=\"`sbsSnapshot`\" pulumi-lang-python=\"`sbs_snapshot`\" pulumi-lang-yaml=\"`sbsSnapshot`\" pulumi-lang-java=\"`sbsSnapshot`\"\u003e`sbsSnapshot`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "size",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:index/InstancePrivateNicPrivateIp:InstancePrivateNicPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/InstanceSecurityGroupInboundRule:InstanceSecurityGroupInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule applies to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule applies to. If no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, the rule will apply to all port. Only one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Need terraform \u003e= 0.13.0 (Optional) The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:index/InstanceSecurityGroupOutboundRule:InstanceSecurityGroupOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action when rule match request (drop or accept)\n"
                },
                "ip": {
                    "type": "string",
                    "description": "Ip address for this rule (e.g: 1.1.1.1). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "Ip range for this rule (e.g: 192.168.1.0/24). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Network port for this rule\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Computed port range for this rule (e.g: 1-1024, 22-22)\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for this rule (TCP, UDP, ICMP or ANY)\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:index/InstanceSecurityGroupRulesInboundRule:InstanceSecurityGroupRulesInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule applies to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Need terraform \u003e= 0.13.0 (Optional) The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:index/InstanceSecurityGroupRulesOutboundRule:InstanceSecurityGroupRulesOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action when rule match request (drop or accept)\n"
                },
                "ip": {
                    "type": "string",
                    "description": "Ip address for this rule (e.g: 1.1.1.1). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "Ip range for this rule (e.g: 192.168.1.0/24). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Network port for this rule\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Computed port range for this rule (e.g: 1-1024, 22-22)\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for this rule (TCP, UDP, ICMP or ANY)\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:index/InstanceServerFilesystem:InstanceServerFilesystem": {
            "properties": {
                "filesystemId": {
                    "type": "string",
                    "description": "The unique ID of the filesystem attached to the server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the filesystem\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "status"
                    ]
                }
            }
        },
        "scaleway:index/InstanceServerPrivateIp:InstanceServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/InstanceServerPrivateNetwork:InstanceServerPrivateNetwork": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "MAC address of the NIC\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "pnicId": {
                    "type": "string",
                    "description": "The ID of the NIC\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private NIC state\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "macAddress",
                        "pnId",
                        "pnicId",
                        "status"
                    ]
                }
            }
        },
        "scaleway:index/InstanceServerPublicIp:InstanceServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP.\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic.\n"
                },
                "family": {
                    "type": "string",
                    "description": "The IP address' family.\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "The IP of the Gateway associated with the IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP.\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "The CIDR netmask of the IP.\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "The provisioning mode of the IP\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "dynamic",
                        "family",
                        "gateway",
                        "id",
                        "netmask",
                        "provisioningMode"
                    ]
                }
            }
        },
        "scaleway:index/InstanceServerRootVolume:InstanceServerRootVolume": {
            "properties": {
                "boot": {
                    "type": "boolean",
                    "description": "Set the volume where the boot the server\n"
                },
                "deleteOnTermination": {
                    "type": "boolean",
                    "description": "Forces deletion of the root volume on instance termination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the root volume.\n"
                },
                "sbsIops": {
                    "type": "integer",
                    "description": "Choose IOPS of your sbs volume, has to be used with \u003cspan pulumi-lang-nodejs=\"`sbsVolume`\" pulumi-lang-dotnet=\"`SbsVolume`\" pulumi-lang-go=\"`sbsVolume`\" pulumi-lang-python=\"`sbs_volume`\" pulumi-lang-yaml=\"`sbsVolume`\" pulumi-lang-java=\"`sbsVolume`\"\u003e`sbsVolume`\u003c/span\u003e for root volume type.\n\n\u003e **Important:** It is not possible to change `root_volume.size_in_gb` for local volumes (\u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e). Changes to this field will recreate the server.\nIt is possible to increase `root_volume.size_in_gb` for SBS volumes, but they cannot be resized down without recreating the server.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "Size of the root volume in gigabytes.\nTo find the right size use [this endpoint](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances) and\ncheck the `volumes_constraint.{min|max}_size` (in bytes) for your \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e.\nDepending on \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e, updates to this field may recreate a new resource.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The volume ID of the root volume of the server, allows you to create server with an existing volume. If empty, will be computed to a created volume ID.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of root volume, can be \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbsVolume`\" pulumi-lang-dotnet=\"`SbsVolume`\" pulumi-lang-go=\"`sbsVolume`\" pulumi-lang-python=\"`sbs_volume`\" pulumi-lang-yaml=\"`sbsVolume`\" pulumi-lang-java=\"`sbsVolume`\"\u003e`sbsVolume`\u003c/span\u003e, default value depends on server type\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "sbsIops",
                        "sizeInGb",
                        "volumeId",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:index/InstanceSnapshotImport:InstanceSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket name containing [qcow2](https://en.wikipedia.org/wiki/Qcow) to import\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "Key of the object to import\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:index/IotDeviceCertificate:IotDeviceCertificate": {
            "properties": {
                "crt": {
                    "type": "string",
                    "description": "X509 PEM encoded certificate of the device\n",
                    "secret": true
                },
                "key": {
                    "type": "string",
                    "description": "The private key of the device, in case it is generated by Scaleway.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "crt",
                        "key"
                    ]
                }
            }
        },
        "scaleway:index/IotDeviceMessageFilters:IotDeviceMessageFilters": {
            "properties": {
                "publish": {
                    "$ref": "#/types/scaleway:index/IotDeviceMessageFiltersPublish:IotDeviceMessageFiltersPublish",
                    "description": "Rules used to restrict topics the device can publish to.\n"
                },
                "subscribe": {
                    "$ref": "#/types/scaleway:index/IotDeviceMessageFiltersSubscribe:IotDeviceMessageFiltersSubscribe",
                    "description": "Rules used to restrict topics the device can subscribe to.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/IotDeviceMessageFiltersPublish:IotDeviceMessageFiltersPublish": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Filtering policy (eg \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`reject`\" pulumi-lang-dotnet=\"`Reject`\" pulumi-lang-go=\"`reject`\" pulumi-lang-python=\"`reject`\" pulumi-lang-yaml=\"`reject`\" pulumi-lang-java=\"`reject`\"\u003e`reject`\u003c/span\u003e)\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics to match (eg `foo/bar/+/baz/#`)\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/IotDeviceMessageFiltersSubscribe:IotDeviceMessageFiltersSubscribe": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Same as publish rules.\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Same as publish rules.\n\n- `certificate.crt` - (Optional) The certificate of the device, either generated by Scaleway or provided.\n\n\u003e **Important:** Updates to `certificate.crt` will disconnect connected devices and the previous certificate will be deleted and won't be recoverable.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/IotRouteDatabase:IotRouteDatabase": {
            "properties": {
                "dbname": {
                    "type": "string",
                    "description": "The database name (e.g. \u003cspan pulumi-lang-nodejs=\"`measurements`\" pulumi-lang-dotnet=\"`Measurements`\" pulumi-lang-go=\"`measurements`\" pulumi-lang-python=\"`measurements`\" pulumi-lang-yaml=\"`measurements`\" pulumi-lang-java=\"`measurements`\"\u003e`measurements`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                },
                "host": {
                    "type": "string",
                    "description": "The database hostname. Can be an IP or a FQDN.\n",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "The database password.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "The database port (e.g. \u003cspan pulumi-lang-nodejs=\"`5432`\" pulumi-lang-dotnet=\"`5432`\" pulumi-lang-go=\"`5432`\" pulumi-lang-python=\"`5432`\" pulumi-lang-yaml=\"`5432`\" pulumi-lang-java=\"`5432`\"\u003e`5432`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "query": {
                    "type": "string",
                    "description": "The SQL query that will be executed when receiving a message ($TOPIC and $PAYLOAD variables are available, see documentation, e.g. `INSERT INTO mytable(date, topic, value) VALUES (NOW(), $TOPIC, $PAYLOAD)`).\n",
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "The database username.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dbname",
                "host",
                "password",
                "port",
                "query",
                "username"
            ]
        },
        "scaleway:index/IotRouteRest:IotRouteRest": {
            "properties": {
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "a map of the extra headers to send with the HTTP call (e.g. `X-Header = Value`).\n",
                    "willReplaceOnChanges": true
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the Rest endpoint (e.g. `https://internal.mycompany.com/ingest/mqttdata`).\n",
                    "willReplaceOnChanges": true
                },
                "verb": {
                    "type": "string",
                    "description": "The HTTP Verb used to call Rest URI (e.g. \u003cspan pulumi-lang-nodejs=\"`post`\" pulumi-lang-dotnet=\"`Post`\" pulumi-lang-go=\"`post`\" pulumi-lang-python=\"`post`\" pulumi-lang-yaml=\"`post`\" pulumi-lang-java=\"`post`\"\u003e`post`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "headers",
                "uri",
                "verb"
            ]
        },
        "scaleway:index/IotRouteS3:IotRouteS3": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the S3 route's destination bucket (e.g. `my-object-storage`).\n",
                    "willReplaceOnChanges": true
                },
                "bucketRegion": {
                    "type": "string",
                    "description": "The region of the S3 route's destination bucket (e.g. `fr-par`).\n",
                    "willReplaceOnChanges": true
                },
                "objectPrefix": {
                    "type": "string",
                    "description": "The string to prefix object names with (e.g. `mykeyprefix-`).\n",
                    "willReplaceOnChanges": true
                },
                "strategy": {
                    "type": "string",
                    "description": "How the S3 route's objects will be created (e.g. \u003cspan pulumi-lang-nodejs=\"`perTopic`\" pulumi-lang-dotnet=\"`PerTopic`\" pulumi-lang-go=\"`perTopic`\" pulumi-lang-python=\"`per_topic`\" pulumi-lang-yaml=\"`perTopic`\" pulumi-lang-java=\"`perTopic`\"\u003e`perTopic`\u003c/span\u003e). See [documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for behaviour details.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucketName",
                "bucketRegion",
                "strategy"
            ]
        },
        "scaleway:index/IpamIpCustomResource:IpamIpCustomResource": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the custom resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "When the resource is in a Private Network, a DNS record is available to resolve the resource name.\n"
                }
            },
            "type": "object",
            "required": [
                "macAddress"
            ]
        },
        "scaleway:index/IpamIpResource:IpamIpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the resource that the IP is attached to.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the resource the IP is attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the resource the IP is attached to.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of resource the IP is attached to.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "macAddress",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "scaleway:index/IpamIpReverse:IpamIpReverse": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "Request a specific IP in the specified source pool.\n\n\u003e **Important:** when requesting specific IP addresses, it is best ensure these are created before any other resource in the Private Network. This can be achieved by using \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 relations, or moving the declarations to another Terraform module. Otherwise, other resources may take the requested address first, blocking the whole Terraform setup. Static IPs should be avoided unless necessary, as we cannot guarantee full automation. We recommend to use DNS, or to not request a specific IP.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The reverse domain name.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "hostname"
                    ]
                }
            }
        },
        "scaleway:index/IpamIpSource:IpamIpSource": {
            "properties": {
                "privateNetworkId": {
                    "type": "string",
                    "description": "The Private Network of the IP (if the IP is a private IP).\n"
                },
                "subnetId": {
                    "type": "string",
                    "description": "The Private Network subnet of the IP (if the IP is a private IP).\n"
                },
                "zonal": {
                    "type": "string",
                    "description": "The zone of the IP (if the IP is public and zoned, rather than private and/or regional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "privateNetworkId",
                        "subnetId",
                        "zonal"
                    ]
                }
            }
        },
        "scaleway:index/JobDefinitionCron:JobDefinitionCron": {
            "properties": {
                "schedule": {
                    "type": "string",
                    "description": "Cron format string.\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "The timezone, must be a canonical TZ identifier as found in this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).\n"
                }
            },
            "type": "object",
            "required": [
                "schedule",
                "timezone"
            ]
        },
        "scaleway:index/JobDefinitionSecretReference:JobDefinitionSecretReference": {
            "properties": {
                "environment": {
                    "type": "string",
                    "description": "An environment variable containing the secret value. Must be specified if \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e is not specified.\n"
                },
                "file": {
                    "type": "string",
                    "description": "The absolute file path where the secret will be mounted. Must be specified if \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e is not specified.\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The secret unique identifier, it could be formatted as region/UUID or UUID. In case the region is passed, it must be the same as the job definition. You could reference the same secret multiple times in the same job definition.\n"
                },
                "secretReferenceId": {
                    "type": "string",
                    "description": "The secret reference UUID that is automatically generated by the provider.\n"
                },
                "secretVersion": {
                    "type": "string",
                    "description": "The secret version.\n"
                }
            },
            "type": "object",
            "required": [
                "secretId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secretId",
                        "secretReferenceId"
                    ]
                }
            }
        },
        "scaleway:index/KeyManagerKeyRotationPolicy:KeyManagerKeyRotationPolicy": {
            "properties": {
                "nextRotationAt": {
                    "type": "string",
                    "description": "The date and time of the next scheduled rotation.\n"
                },
                "rotationPeriod": {
                    "type": "string",
                    "description": "– The period between key rotations (e.g., `\"720h\"` for 30 days).\n"
                }
            },
            "type": "object",
            "required": [
                "rotationPeriod"
            ]
        },
        "scaleway:index/KubernetesClusterAutoUpgrade:KubernetesClusterAutoUpgrade": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "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 to enable Kubernetes patch version auto upgrades.\n\u003e **Important:** When enabling auto upgrades, the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e field take a minor version like x.y (ie 1.18).\n"
                },
                "maintenanceWindowDay": {
                    "type": "string",
                    "description": "The day of the auto upgrade maintenance window (\u003cspan pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\"\u003e`monday`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\"\u003e`sunday`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e).\n"
                },
                "maintenanceWindowStartHour": {
                    "type": "integer",
                    "description": "The start hour (UTC) of the 2-hour auto upgrade maintenance window (0 to 23).\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "maintenanceWindowDay",
                "maintenanceWindowStartHour"
            ]
        },
        "scaleway:index/KubernetesClusterAutoscalerConfig:KubernetesClusterAutoscalerConfig": {
            "properties": {
                "balanceSimilarNodeGroups": {
                    "type": "boolean",
                    "description": "Detect similar node groups and balance the number of nodes between them.\n"
                },
                "disableScaleDown": {
                    "type": "boolean",
                    "description": "Disables the scale down feature of the autoscaler.\n"
                },
                "estimator": {
                    "type": "string",
                    "description": "Type of resource estimator to be used in scale up.\n"
                },
                "expander": {
                    "type": "string",
                    "description": "Type of node group expander to be used in scale up.\n"
                },
                "expendablePodsPriorityCutoff": {
                    "type": "integer",
                    "description": "Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they don't cause scale up. Pods with null priority (PodPriority disabled) are non expendable.\n"
                },
                "ignoreDaemonsetsUtilization": {
                    "type": "boolean",
                    "description": "Ignore DaemonSet pods when calculating resource utilization for scaling down.\n"
                },
                "maxGracefulTerminationSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node\n"
                },
                "scaleDownDelayAfterAdd": {
                    "type": "string",
                    "description": "How long after scale up that scale down evaluation resumes.\n"
                },
                "scaleDownUnneededTime": {
                    "type": "string",
                    "description": "How long a node should be unneeded before it is eligible for scale down.\n"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number",
                    "description": "Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/KubernetesClusterKubeconfig:KubernetesClusterKubeconfig": {
            "properties": {
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The CA certificate of the Kubernetes API server.\n"
                },
                "configFile": {
                    "type": "string",
                    "description": "The raw kubeconfig file.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the Kubernetes API server.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The token to connect to the Kubernetes API server.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clusterCaCertificate",
                        "configFile",
                        "host",
                        "token"
                    ]
                }
            }
        },
        "scaleway:index/KubernetesClusterOpenIdConnectConfig:KubernetesClusterOpenIdConnectConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "A client id that all tokens must be issued for\n"
                },
                "groupsClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "JWT claim to use as the user's group\n"
                },
                "groupsPrefix": {
                    "type": "string",
                    "description": "Prefix prepended to group claims\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "URL of the provider which allows the API server to discover public signing keys\n"
                },
                "requiredClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Multiple key=value pairs that describes a required claim in the ID Token\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "JWT claim to use as the user name\n"
                },
                "usernamePrefix": {
                    "type": "string",
                    "description": "Prefix prepended to username\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "issuerUrl"
            ]
        },
        "scaleway:index/KubernetesNodePoolNode:KubernetesNodePoolNode": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/KubernetesNodePoolNodePrivateIp:KubernetesNodePoolNodePrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the node.\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "The public IPv4. (Deprecated, Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source)\n",
                    "deprecationMessage": "Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source"
                },
                "publicIpV6": {
                    "type": "string",
                    "description": "The public IPv6. (Deprecated, Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source)\n",
                    "deprecationMessage": "Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the node.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "privateIps",
                        "publicIp",
                        "publicIpV6",
                        "status"
                    ]
                }
            }
        },
        "scaleway:index/KubernetesNodePoolNodePrivateIp:KubernetesNodePoolNodePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/KubernetesNodePoolUpgradePolicy:KubernetesNodePoolUpgradePolicy": {
            "properties": {
                "maxSurge": {
                    "type": "integer",
                    "description": "The maximum number of nodes to be created during the upgrade\n"
                },
                "maxUnavailable": {
                    "type": "integer",
                    "description": "The maximum number of nodes that can be not ready at the same time\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/LoadbalancerAclAction:LoadbalancerAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerAclActionRedirect:LoadbalancerAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type. Possible values are: \u003cspan pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\"\u003e`allow`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:index/LoadbalancerAclActionRedirect:LoadbalancerAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use. Valid values are \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`303`\" pulumi-lang-dotnet=\"`303`\" pulumi-lang-go=\"`303`\" pulumi-lang-python=\"`303`\" pulumi-lang-yaml=\"`303`\" pulumi-lang-java=\"`303`\"\u003e`303`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e.\n"
                },
                "target": {
                    "type": "string",
                    "description": "An URL can be used in case of a location redirect (e.g. `https://scaleway.com` will redirect to this same URL). A scheme name (e.g. \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ftp`\" pulumi-lang-dotnet=\"`Ftp`\" pulumi-lang-go=\"`ftp`\" pulumi-lang-python=\"`ftp`\" pulumi-lang-yaml=\"`ftp`\" pulumi-lang-java=\"`ftp`\"\u003e`ftp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e) will replace the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type. Possible values are: \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=\"`scheme`\" pulumi-lang-dotnet=\"`Scheme`\" pulumi-lang-go=\"`scheme`\" pulumi-lang-python=\"`scheme`\" pulumi-lang-yaml=\"`scheme`\" pulumi-lang-java=\"`scheme`\"\u003e`scheme`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/LoadbalancerAclMatch:LoadbalancerAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match. This filter is supported only if your backend protocol has an HTTP forward protocol.\nIt extracts the request's URL path, which starts at the first slash and ends before the question mark (without the host part).\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`aclHttpFilterNone`\" pulumi-lang-dotnet=\"`AclHttpFilterNone`\" pulumi-lang-go=\"`aclHttpFilterNone`\" pulumi-lang-python=\"`acl_http_filter_none`\" pulumi-lang-yaml=\"`aclHttpFilterNone`\" pulumi-lang-java=\"`aclHttpFilterNone`\"\u003e`aclHttpFilterNone`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathBegin`\" pulumi-lang-dotnet=\"`PathBegin`\" pulumi-lang-go=\"`pathBegin`\" pulumi-lang-python=\"`path_begin`\" pulumi-lang-yaml=\"`pathBegin`\" pulumi-lang-java=\"`pathBegin`\"\u003e`pathBegin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathEnd`\" pulumi-lang-dotnet=\"`PathEnd`\" pulumi-lang-go=\"`pathEnd`\" pulumi-lang-python=\"`path_end`\" pulumi-lang-yaml=\"`pathEnd`\" pulumi-lang-java=\"`pathEnd`\"\u003e`pathEnd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "If you have \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e at \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e, you can use this field to filter on the HTTP header's value.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter.\nKeep in mind that in the case of \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e the HTTP header field name is case insensitive.\n"
                },
                "invert": {
                    "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, the condition will be of type \"unless\".\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/LoadbalancerBackendHealthCheckHttp:LoadbalancerBackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTP endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "scaleway:index/LoadbalancerBackendHealthCheckHttps:LoadbalancerBackendHealthCheckHttps": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTPS endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "scaleway:index/LoadbalancerBackendHealthCheckTcp:LoadbalancerBackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:index/LoadbalancerCertificateCustomCertificate:LoadbalancerCertificateCustomCertificate": {
            "properties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted certificate chain\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "certificateChain"
            ]
        },
        "scaleway:index/LoadbalancerCertificateLetsencrypt:LoadbalancerCertificateLetsencrypt": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "Main domain of the certificate\n",
                    "willReplaceOnChanges": true
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The alternative domain names of the certificate\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "commonName"
            ]
        },
        "scaleway:index/LoadbalancerFrontendAcl:LoadbalancerFrontendAcl": {
            "properties": {
                "action": {
                    "$ref": "#/types/scaleway:index/LoadbalancerFrontendAclAction:LoadbalancerFrontendAclAction",
                    "description": "Action to undertake when an ACL filter matches.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the frontend was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the ACL\n"
                },
                "match": {
                    "$ref": "#/types/scaleway:index/LoadbalancerFrontendAclMatch:LoadbalancerFrontendAclMatch",
                    "description": "The ACL match rule. At least \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`httpFilterValue`\" pulumi-lang-dotnet=\"`HttpFilterValue`\" pulumi-lang-go=\"`httpFilterValue`\" pulumi-lang-python=\"`http_filter_value`\" pulumi-lang-yaml=\"`httpFilterValue`\" pulumi-lang-java=\"`httpFilterValue`\"\u003e`httpFilterValue`\u003c/span\u003e are required.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the frontend resource was updated.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "createdAt",
                        "match",
                        "name",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:index/LoadbalancerFrontendAclAction:LoadbalancerFrontendAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerFrontendAclActionRedirect:LoadbalancerFrontendAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type. Possible values are: \u003cspan pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\"\u003e`allow`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:index/LoadbalancerFrontendAclActionRedirect:LoadbalancerFrontendAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use. Valid values are \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`303`\" pulumi-lang-dotnet=\"`303`\" pulumi-lang-go=\"`303`\" pulumi-lang-python=\"`303`\" pulumi-lang-yaml=\"`303`\" pulumi-lang-java=\"`303`\"\u003e`303`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e.\n"
                },
                "target": {
                    "type": "string",
                    "description": "A URL can be used in case of a location redirect (e.g. `https://scaleway.com` will redirect to this same URL). A scheme name (e.g. \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ftp`\" pulumi-lang-dotnet=\"`Ftp`\" pulumi-lang-go=\"`ftp`\" pulumi-lang-python=\"`ftp`\" pulumi-lang-yaml=\"`ftp`\" pulumi-lang-java=\"`ftp`\"\u003e`ftp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e) will replace the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type. Possible values are: \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=\"`scheme`\" pulumi-lang-dotnet=\"`Scheme`\" pulumi-lang-go=\"`scheme`\" pulumi-lang-python=\"`scheme`\" pulumi-lang-yaml=\"`scheme`\" pulumi-lang-java=\"`scheme`\"\u003e`scheme`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/LoadbalancerFrontendAclMatch:LoadbalancerFrontendAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match. This filter is supported only if your backend protocol has an HTTP forward protocol.\nIt extracts the request's URL path, which starts at the first slash and ends before the question mark (without the host part).\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`aclHttpFilterNone`\" pulumi-lang-dotnet=\"`AclHttpFilterNone`\" pulumi-lang-go=\"`aclHttpFilterNone`\" pulumi-lang-python=\"`acl_http_filter_none`\" pulumi-lang-yaml=\"`aclHttpFilterNone`\" pulumi-lang-java=\"`aclHttpFilterNone`\"\u003e`aclHttpFilterNone`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathBegin`\" pulumi-lang-dotnet=\"`PathBegin`\" pulumi-lang-go=\"`pathBegin`\" pulumi-lang-python=\"`path_begin`\" pulumi-lang-yaml=\"`pathBegin`\" pulumi-lang-java=\"`pathBegin`\"\u003e`pathBegin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathEnd`\" pulumi-lang-dotnet=\"`PathEnd`\" pulumi-lang-go=\"`pathEnd`\" pulumi-lang-python=\"`path_end`\" pulumi-lang-yaml=\"`pathEnd`\" pulumi-lang-java=\"`pathEnd`\"\u003e`pathEnd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "If you have \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e at \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e, you can use this field to filter on the HTTP header's value.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter.\nKeep in mind that in the case of \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e the HTTP header field name is case insensitive.\n"
                },
                "invert": {
                    "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, the condition will be of type \"unless\".\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                }
            },
            "type": "object"
        },
        "scaleway:index/LoadbalancerPrivateIp:LoadbalancerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/LoadbalancerPrivateNetwork:LoadbalancerPrivateNetwork": {
            "properties": {
                "dhcpConfig": {
                    "type": "boolean",
                    "description": "Set to true if you want to let DHCP assign IP addresses\n",
                    "deprecationMessage": "dhcp_config field is deprecated, please use \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipamIds`\" pulumi-lang-dotnet=\"`IpamIds`\" pulumi-lang-go=\"`ipamIds`\" pulumi-lang-python=\"`ipam_ids`\" pulumi-lang-yaml=\"`ipamIds`\" pulumi-lang-java=\"`ipamIds`\"\u003e`ipamIds`\u003c/span\u003e instead"
                },
                "ipamIds": {
                    "type": "string",
                    "description": "IPAM ID of a pre-reserved IP address to assign to the Load Balancer on this Private Network.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network to attach to.\n- \u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e will recreate the attachment.\n"
                },
                "staticConfigs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Define an IP address in the subnet of your private network that will be assigned to your load balancer instance\n",
                    "deprecationMessage": "static_config field is deprecated, please use \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipamIds`\" pulumi-lang-dotnet=\"`IpamIds`\" pulumi-lang-go=\"`ipamIds`\" pulumi-lang-python=\"`ipam_ids`\" pulumi-lang-yaml=\"`ipamIds`\" pulumi-lang-java=\"`ipamIds`\"\u003e`ipamIds`\u003c/span\u003e instead"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the private network connection.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dhcpConfig",
                        "ipamIds",
                        "privateNetworkId",
                        "staticConfigs",
                        "status",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:index/MnqSnsCredentialsPermissions:MnqSnsCredentialsPermissions": {
            "properties": {
                "canManage": {
                    "type": "boolean",
                    "description": ". Defines whether the user can manage the associated resource(s).\n"
                },
                "canPublish": {
                    "type": "boolean",
                    "description": ". Defines whether the user can publish messages to the service.\n"
                },
                "canReceive": {
                    "type": "boolean",
                    "description": ". Defines whether the user can receive messages from the service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "canManage",
                        "canPublish",
                        "canReceive"
                    ]
                }
            }
        },
        "scaleway:index/MnqSqsCredentialsPermissions:MnqSqsCredentialsPermissions": {
            "properties": {
                "canManage": {
                    "type": "boolean",
                    "description": ". Defines whether the user can manage the associated resource(s).\n"
                },
                "canPublish": {
                    "type": "boolean",
                    "description": ". Defines whether the user can publish messages to the service.\n"
                },
                "canReceive": {
                    "type": "boolean",
                    "description": ". Defines whether the user can receive messages from the service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "canManage",
                        "canPublish",
                        "canReceive"
                    ]
                }
            }
        },
        "scaleway:index/MnqSqsQueueDeadLetterQueue:MnqSqsQueueDeadLetterQueue": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the queue with format `{region/{project-id}/{queue-name}`\n"
                },
                "maxReceiveCount": {
                    "type": "integer",
                    "description": "The number of times a message is delivered to the source queue before being sent to the dead-letter queue. Must be between 1 and 1,000.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "maxReceiveCount"
            ]
        },
        "scaleway:index/MongoDbInstancePrivateIp:MongoDbInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/MongoDbInstancePrivateNetwork:MongoDbInstancePrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for your endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP addresses for your endpoint.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecords",
                        "id",
                        "ips",
                        "pnId",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/MongoDbInstancePublicNetwork:MongoDbInstancePublicNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "The DNS record of your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecord",
                        "id",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/ObjectBucketAclAccessControlPolicy:ObjectBucketAclAccessControlPolicy": {
            "properties": {
                "grants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicyGrant:ObjectBucketAclAccessControlPolicyGrant"
                    },
                    "description": "Grant\n"
                },
                "owner": {
                    "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicyOwner:ObjectBucketAclAccessControlPolicyOwner",
                    "description": "Configuration block of the bucket project owner's display organization ID.\n"
                }
            },
            "type": "object",
            "required": [
                "owner"
            ]
        },
        "scaleway:index/ObjectBucketAclAccessControlPolicyGrant:ObjectBucketAclAccessControlPolicyGrant": {
            "properties": {
                "grantee": {
                    "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicyGrantGrantee:ObjectBucketAclAccessControlPolicyGrantGrantee",
                    "description": "Configuration block for the project being granted permissions.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Logging permissions assigned to the grantee for the bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "permission"
            ]
        },
        "scaleway:index/ObjectBucketAclAccessControlPolicyGrantGrantee:ObjectBucketAclAccessControlPolicyGrantGrantee": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Display name of the grantee to grant access to.\n"
                },
                "id": {
                    "type": "string",
                    "description": "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, \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 and \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e separated by (`/`).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of grantee. Valid values: `CanonicalUser`, `Group`\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The uri of the grantee if you are granting permissions to a predefined group.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "scaleway:index/ObjectBucketAclAccessControlPolicyOwner:ObjectBucketAclAccessControlPolicyOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The project ID of the grantee.\n"
                },
                "id": {
                    "type": "string",
                    "description": "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, \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 and \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e separated by (`/`).\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/ObjectBucketCorsRule:ObjectBucketCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which headers are allowed.\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which methods are allowed (`GET`, `PUT`, `POST`, `DELETE` or `HEAD`).\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which origins are allowed.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies header exposure in the response.\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "Specifies time in seconds that the browser can cache the response for a preflight request.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedMethods",
                "allowedOrigins"
            ]
        },
        "scaleway:index/ObjectBucketLifecycleRule:ObjectBucketLifecycleRule": {
            "properties": {
                "abortIncompleteMultipartUploadDays": {
                    "type": "integer",
                    "description": "Specifies the number of days after initiating a multipart upload when the multipart upload must be completed.\n\n\u003e **Important:** Avoid using \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e for `AbortIncompleteMultipartUpload`, as any incomplete multipart upload will be billed\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "The element value can be either Enabled or Disabled. If a rule is disabled, Scaleway Object Storage does not perform any of the actions defined in the rule.\n"
                },
                "expiration": {
                    "$ref": "#/types/scaleway:index/ObjectBucketLifecycleRuleExpiration:ObjectBucketLifecycleRuleExpiration",
                    "description": "Specifies a period in the object's expire\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for the rule. Must be less than or equal to 255 characters in length.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Object key prefix identifying one or more objects to which the rule applies.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Specifies object tags key and value.\n"
                },
                "transitions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketLifecycleRuleTransition:ObjectBucketLifecycleRuleTransition"
                    },
                    "description": "Define when objects transition to another storage class\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/ObjectBucketLifecycleRuleExpiration:ObjectBucketLifecycleRuleExpiration": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect.\n"
                }
            },
            "type": "object",
            "required": [
                "days"
            ]
        },
        "scaleway:index/ObjectBucketLifecycleRuleTransition:ObjectBucketLifecycleRuleTransition": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway [storage class](https://www.scaleway.com/en/docs/object-storage/concepts/#storage-class) `STANDARD`, `GLACIER`, `ONEZONE_IA`  to which you want the object to transition.\n\n\n\u003e **Important:**  If versioning is enabled, this rule only deletes the current version of an object.\n\u003e **Important:**  If versioning is enabled, this rule only deletes the current version of an object.\n\n\n\u003e **Important:**  `ONEZONE_IA` is only available in `fr-par` region. The storage class `GLACIER` is not available in `pl-waw` region.\n\u003e **Important:**  `ONEZONE_IA` is only available in `fr-par` region. The storage class `GLACIER` is not available in `pl-waw` region.\n"
                }
            },
            "type": "object",
            "required": [
                "storageClass"
            ]
        },
        "scaleway:index/ObjectBucketLockConfigurationRule:ObjectBucketLockConfigurationRule": {
            "properties": {
                "defaultRetention": {
                    "$ref": "#/types/scaleway:index/ObjectBucketLockConfigurationRuleDefaultRetention:ObjectBucketLockConfigurationRuleDefaultRetention",
                    "description": "The default retention for the lock.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultRetention"
            ]
        },
        "scaleway:index/ObjectBucketLockConfigurationRuleDefaultRetention:ObjectBucketLockConfigurationRuleDefaultRetention": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "The number of days you want to specify for the default retention period.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The default object lock retention mode you want to apply to new objects placed in the specified bucket. Valid values are `GOVERNANCE` or `COMPLIANCE`. Refer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/object-lock/#retention-modes) for more information on retention modes.\n"
                },
                "years": {
                    "type": "integer",
                    "description": "The number of years you want to specify for the default retention period.\n"
                }
            },
            "type": "object",
            "required": [
                "mode"
            ]
        },
        "scaleway:index/ObjectBucketVersioning:ObjectBucketVersioning": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled"
                    ]
                }
            }
        },
        "scaleway:index/ObjectBucketWebsiteConfigurationErrorDocument:ObjectBucketWebsiteConfigurationErrorDocument": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The object key name to use when a 4XX class error occurs.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "scaleway:index/ObjectBucketWebsiteConfigurationIndexDocument:ObjectBucketWebsiteConfigurationIndexDocument": {
            "properties": {
                "suffix": {
                    "type": "string",
                    "description": "A suffix that is appended to a request targeting a specific directory on the website endpoint.\n\n\u003e **Important:** The suffix must not be empty and must not include a slash character. The routing is not supported.\n"
                }
            },
            "type": "object",
            "required": [
                "suffix"
            ]
        },
        "scaleway:index/RedisClusterAcl:RedisClusterAcl": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A text describing this rule. Default description: `Allow IP`\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e conflict with \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. Only one should be specified.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "id",
                        "ip"
                    ]
                }
            }
        },
        "scaleway:index/RedisClusterPrivateIp:RedisClusterPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/RedisClusterPrivateNetwork:RedisClusterPrivateNetwork": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The UUID of the Private Network resource.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "serviceIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Endpoint IPv4 addresses in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (IPv6 is not supported by the Scaleway API). You must provide at least one IP per node.\nKeep in mind that in cluster mode you cannot edit your Private Network after its creation so if you want to be able to\nscale your cluster horizontally (adding nodes) later, you should provide more IPs than nodes.\nIf not set, the IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n\u003e **Important:** When IPAM is enabled, the IPs specified here will be ignored and should not be provided.\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e conflicts with \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e. Only one should be specified.\n\n\u003e **Important:** The way to use Private Networks differs whether you are using Redis™ in Standalone or cluster mode.\n\n- Standalone mode (\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e = 1) : you can attach as many Private Networks as you want (each must be a separate\nblock). If you detach your only Private Network, your cluster won't be reachable until you define a new Private or\nPublic Network. You can modify your \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e and its specs, you can have both a Private and Public Network side\nby side.\n\n- Cluster mode (\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e \u003e 2) : you can define a single Private Network as you create your cluster, you won't be\nable to edit or detach it afterward, unless you create another cluster. This also means that, if you are using a static\nconfiguration (\u003cspan pulumi-lang-nodejs=\"`serviceIps`\" pulumi-lang-dotnet=\"`ServiceIps`\" pulumi-lang-go=\"`serviceIps`\" pulumi-lang-python=\"`service_ips`\" pulumi-lang-yaml=\"`serviceIps`\" pulumi-lang-java=\"`serviceIps`\"\u003e`serviceIps`\u003c/span\u003e), you won't be able to scale your cluster horizontally (add more nodes) since it would\nrequire updating the Private Network to add IPs.\nYour \u003cspan pulumi-lang-nodejs=\"`serviceIps`\" pulumi-lang-dotnet=\"`ServiceIps`\" pulumi-lang-go=\"`serviceIps`\" pulumi-lang-python=\"`service_ips`\" pulumi-lang-yaml=\"`serviceIps`\" pulumi-lang-java=\"`serviceIps`\"\u003e`serviceIps`\u003c/span\u003e must be listed as follows:\n\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the\nRedis™ cluster should be created.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "id",
                        "ips",
                        "port",
                        "serviceIps",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:index/RedisClusterPublicNetwork:RedisClusterPublicNetwork": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "ips",
                        "port"
                    ]
                }
            }
        },
        "scaleway:index/SecretEphemeralPolicy:SecretEphemeralPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action to perform when the version of a secret expires. Available values can be found in [SDK constants](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/secret/v1beta1#pkg-constants).\n"
                },
                "expiresOnceAccessed": {
                    "type": "boolean",
                    "description": "True if the secret version expires after a single user access.\n"
                },
                "ttl": {
                    "type": "string",
                    "description": "Time frame, from one second and up to one year, during which the secret's versions are valid. Has to be specified in [Go Duration format](https://pkg.go.dev/time#ParseDuration) (ex: \"30m\", \"24h\").\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:index/SecretVersion:SecretVersion": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of the secret's creation (in RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret (e.g. `my-new-description`).\n"
                },
                "latest": {
                    "type": "boolean",
                    "description": "Returns true if the version is the latest.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The revision of secret version\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The secret ID associated with this version\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the secret.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of the secret's last update (in RFC 3339 format).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "revision",
                        "secretId",
                        "status",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:index/TemDomainReputation:TemDomainReputation": {
            "properties": {
                "previousScore": {
                    "type": "integer",
                    "description": "The previously-calculated domain's reputation score.\n"
                },
                "previousScoredAt": {
                    "type": "string",
                    "description": "The time and date the previous reputation score was calculated.\n"
                },
                "score": {
                    "type": "integer",
                    "description": "A range from 0 to 100 that determines your domain's reputation score.\n"
                },
                "scoredAt": {
                    "type": "string",
                    "description": "The time and date the score was calculated.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the domain's reputation.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "previousScore",
                        "previousScoredAt",
                        "score",
                        "scoredAt",
                        "status"
                    ]
                }
            }
        },
        "scaleway:index/VpcGatewayNetworkIpamConfig:VpcGatewayNetworkIpamConfig": {
            "properties": {
                "ipamIpId": {
                    "type": "string",
                    "description": "Use this IPAM-booked IP ID as the Gateway's IP in this Private Network.\n"
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Defines whether to enable the default route on the GatewayNetwork.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipamIpId"
                    ]
                }
            }
        },
        "scaleway:index/VpcGatewayNetworkPrivateIp:VpcGatewayNetworkPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:index/VpcPrivateNetworkIpv4Subnet:VpcPrivateNetworkIpv4Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in hexadecimal notation, e.g., '2001:db8::' for a '2001:db8::/64' subnet.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The subnet ID.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 64 for a 'ffff:ffff:ffff:ffff::' mask.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR.\n",
                    "willReplaceOnChanges": true
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "createdAt",
                        "id",
                        "prefixLength",
                        "subnet",
                        "subnetMask",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:index/VpcPrivateNetworkIpv6Subnet:VpcPrivateNetworkIpv6Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in hexadecimal notation, e.g., '2001:db8::' for a '2001:db8::/64' subnet.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The subnet ID.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 64 for a 'ffff:ffff:ffff:ffff::' mask.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR.\n",
                    "willReplaceOnChanges": true
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "createdAt",
                        "id",
                        "prefixLength",
                        "subnet",
                        "subnetMask",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:index/WebhostingCpanelUrl:WebhostingCpanelUrl": {
            "properties": {
                "dashboard": {
                    "type": "string",
                    "description": "The URL of the Dashboard.\n"
                },
                "webmail": {
                    "type": "string",
                    "description": "The URL of the Webmail interface.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dashboard",
                        "webmail"
                    ]
                }
            }
        },
        "scaleway:index/WebhostingNameServer:WebhostingNameServer": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the server\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Whether or not the webhosting is the default one\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "hostname",
                        "isDefault",
                        "status"
                    ]
                }
            }
        },
        "scaleway:index/WebhostingOption:WebhostingOption": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The option ID.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The option name.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name"
                    ]
                }
            }
        },
        "scaleway:index/WebhostingRecord:WebhostingRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The option name.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of DNS records associated with the webhosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time to live in seconds of the record\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the DNS record\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the DNS record\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "priority",
                        "status",
                        "ttl",
                        "type",
                        "value"
                    ]
                }
            }
        },
        "scaleway:index/getBaremetalOfferCpu:getBaremetalOfferCpu": {
            "properties": {
                "coreCount": {
                    "type": "integer",
                    "description": "Number of core on this CPU.\n"
                },
                "frequency": {
                    "type": "integer",
                    "description": "Frequency of the memory in MHz.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "threadCount": {
                    "type": "integer",
                    "description": "Number of thread on this CPU.\n"
                }
            },
            "type": "object",
            "required": [
                "coreCount",
                "frequency",
                "name",
                "threadCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalOfferDisk:getBaremetalOfferDisk": {
            "properties": {
                "capacity": {
                    "type": "integer",
                    "description": "Capacity of the memory in GB.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of memory.\n"
                }
            },
            "type": "object",
            "required": [
                "capacity",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalOfferMemory:getBaremetalOfferMemory": {
            "properties": {
                "capacity": {
                    "type": "integer",
                    "description": "Capacity of the memory in GB.\n"
                },
                "frequency": {
                    "type": "integer",
                    "description": "Frequency of the memory in MHz.\n"
                },
                "isEcc": {
                    "type": "boolean",
                    "description": "True if error-correcting code is available on this memory.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of memory.\n"
                }
            },
            "type": "object",
            "required": [
                "capacity",
                "frequency",
                "isEcc",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerIp:getBaremetalServerIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerIpv4:getBaremetalServerIpv4": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerIpv6:getBaremetalServerIpv6": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The Reverse of the IPv6\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the IPv6\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id",
                "reverse",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerOption:getBaremetalServerOption": {
            "properties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Auto expire the option after this date\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name. Only one 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=\"`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 should be specified.\n"
                }
            },
            "type": "object",
            "required": [
                "expiresAt",
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerPrivateIp:getBaremetalServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBaremetalServerPrivateNetwork:getBaremetalServerPrivateNetwork": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the private network\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the server.\n"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPAM IP IDs to attach to the server\n"
                },
                "mappingId": {
                    "type": "string",
                    "description": "The ID of the Server-to-Private Network mapping\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private network status\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the private network\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "The VLAN ID associated to the private network\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "ipamIpIds",
                "mappingId",
                "status",
                "updatedAt",
                "vlan"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBillingConsumptionsConsumption:getBillingConsumptionsConsumption": {
            "properties": {
                "billedQuantity": {
                    "type": "string",
                    "description": "The consumed quantity.\n"
                },
                "categoryName": {
                    "type": "string",
                    "description": "The name of the consumption category.\n"
                },
                "productName": {
                    "type": "string",
                    "description": "The product name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the consumption list is associated with.\n"
                },
                "sku": {
                    "type": "string",
                    "description": "The unique identifier of the product.\n"
                },
                "unit": {
                    "type": "string",
                    "description": "The unit of consumed quantity.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The monetary value of the consumption.\n"
                }
            },
            "type": "object",
            "required": [
                "billedQuantity",
                "categoryName",
                "productName",
                "projectId",
                "sku",
                "unit",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBillingInvoicesInvoice:getBillingInvoicesInvoice": {
            "properties": {
                "billingPeriod": {
                    "type": "string",
                    "description": "The billing period of the invoice in the YYYY-MM format.\n"
                },
                "dueDate": {
                    "type": "string",
                    "description": "The payment time limit, set according to the Organization's payment conditions (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated invoice ID.\n"
                },
                "invoiceType": {
                    "type": "string",
                    "description": "Invoices with the given type are listed. Valid values are \u003cspan pulumi-lang-nodejs=\"`periodic`\" pulumi-lang-dotnet=\"`Periodic`\" pulumi-lang-go=\"`periodic`\" pulumi-lang-python=\"`periodic`\" pulumi-lang-yaml=\"`periodic`\" pulumi-lang-java=\"`periodic`\"\u003e`periodic`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`purchase`\" pulumi-lang-dotnet=\"`Purchase`\" pulumi-lang-go=\"`purchase`\" pulumi-lang-python=\"`purchase`\" pulumi-lang-yaml=\"`purchase`\" pulumi-lang-java=\"`purchase`\"\u003e`purchase`\u003c/span\u003e.\n"
                },
                "issuedDate": {
                    "type": "string",
                    "description": "The date when the invoice was sent to the customer (RFC 3339 format).\n"
                },
                "number": {
                    "type": "integer",
                    "description": "The invoice number.\n"
                },
                "organizationName": {
                    "type": "string",
                    "description": "The organization name.\n"
                },
                "sellerName": {
                    "type": "string",
                    "description": "The name of the seller (Scaleway).\n"
                },
                "startDate": {
                    "type": "string",
                    "description": "The start date of the billing period (RFC 3339 format).\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the invoice.\n"
                },
                "stopDate": {
                    "type": "string",
                    "description": "The end date of the billing period (RFC 3339 format).\n"
                },
                "totalDiscount": {
                    "type": "string",
                    "description": "The total discount amount of the invoice.\n"
                },
                "totalTax": {
                    "type": "string",
                    "description": "The total tax amount of the invoice.\n"
                },
                "totalTaxed": {
                    "type": "string",
                    "description": "The total amount, taxed.\n"
                },
                "totalUndiscount": {
                    "type": "string",
                    "description": "The total amount of the invoice before applying the discount.\n"
                },
                "totalUntaxed": {
                    "type": "string",
                    "description": "The total amount, untaxed.\n"
                }
            },
            "type": "object",
            "required": [
                "billingPeriod",
                "dueDate",
                "id",
                "invoiceType",
                "issuedDate",
                "number",
                "organizationName",
                "sellerName",
                "startDate",
                "state",
                "stopDate",
                "totalDiscount",
                "totalTax",
                "totalTaxed",
                "totalUndiscount",
                "totalUntaxed"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBlockSnapshotExport:getBlockSnapshotExport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getBlockSnapshotImport:getBlockSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getCockpitEndpoint:getCockpitEndpoint": {
            "properties": {
                "alertmanagerUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for the [Alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager).\n"
                },
                "grafanaUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for Grafana.\n"
                },
                "logsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [logs](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#logs) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "metricsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [metrics](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#metric) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "tracesUrl": {
                    "type": "string",
                    "description": "The traces URL.\n"
                }
            },
            "type": "object",
            "required": [
                "alertmanagerUrl",
                "grafanaUrl",
                "logsUrl",
                "metricsUrl",
                "tracesUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getCockpitPushUrl:getCockpitPushUrl": {
            "properties": {
                "pushLogsUrl": {
                    "type": "string",
                    "description": "Push URL for logs (Grafana Loki)\n"
                },
                "pushMetricsUrl": {
                    "type": "string",
                    "description": "Push URL for metrics (Grafana Mimir)\n"
                }
            },
            "type": "object",
            "required": [
                "pushLogsUrl",
                "pushMetricsUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerHealthCheck:getContainerHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getContainerHealthCheckHttp:getContainerHealthCheckHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerHealthCheckHttp:getContainerHealthCheckHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerLivenessProbe:getContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getContainerLivenessProbeHttp:getContainerLivenessProbeHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp",
                "timeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerLivenessProbeHttp:getContainerLivenessProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerScalingOption:getContainerScalingOption": {
            "properties": {
                "concurrentRequestsThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the number of concurrent requests being processed per container instance.\n"
                },
                "cpuUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the CPU usage of a container instance.\n"
                },
                "memoryUsageThreshold": {
                    "type": "integer",
                    "description": "Scale depending on the memory usage of a container instance.\n"
                }
            },
            "type": "object",
            "required": [
                "concurrentRequestsThreshold",
                "cpuUsageThreshold",
                "memoryUsageThreshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerStartupProbe:getContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Number of consecutive failures before considering the container has to be restarted.\n"
                },
                "https": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getContainerStartupProbeHttp:getContainerStartupProbeHttp"
                    },
                    "description": "Perform HTTP check on the container with the specified path.\n"
                },
                "interval": {
                    "type": "string",
                    "description": "Time interval between checks (in duration notation, e.g. \"30s\").\n"
                },
                "tcp": {
                    "type": "boolean",
                    "description": "When 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, performs TCP checks on the container.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "https",
                "interval",
                "tcp",
                "timeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getContainerStartupProbeHttp:getContainerStartupProbeHttp": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to use for the HTTP health check.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseAclAclRule:getDatabaseAclAclRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A simple text describing this rule\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstanceLoadBalancer:getDatabaseInstanceLoadBalancer": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The endpoint ID\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of your endpoint\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP of your load balancer service\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of your load balancer service\n"
                }
            },
            "type": "object",
            "required": [
                "endpointId",
                "hostname",
                "ip",
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstanceLogsPolicy:getDatabaseInstanceLogsPolicy": {
            "properties": {
                "maxAgeRetention": {
                    "type": "integer",
                    "description": "The max age (in days) of remote logs to keep on the Database Instance\n"
                },
                "totalDiskRetention": {
                    "type": "integer",
                    "description": "The max disk size of remote logs to keep on the Database Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "maxAgeRetention",
                "totalDiskRetention"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstancePrivateIp:getDatabaseInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Database Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstancePrivateNetwork:getDatabaseInstancePrivateNetwork": {
            "properties": {
                "enableIpam": {
                    "type": "boolean",
                    "description": "Whether or not the private network endpoint should be configured with IPAM\n"
                },
                "endpointId": {
                    "type": "string",
                    "description": "The endpoint ID\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of your endpoint\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP of your Instance within the private service\n"
                },
                "ipNet": {
                    "type": "string",
                    "description": "The IP with the given mask within the private subnet\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of your private service\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone you want to attach the resource to\n"
                }
            },
            "type": "object",
            "required": [
                "enableIpam",
                "endpointId",
                "hostname",
                "ip",
                "ipNet",
                "name",
                "pnId",
                "port",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstanceReadReplica:getDatabaseInstanceReadReplica": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "IP of the replica\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the replica\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDatabaseInstanceUpgradableVersion:getDatabaseInstanceUpgradableVersion": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Database Instance.\n"
                },
                "minorVersion": {
                    "type": "string",
                    "description": "Minor version string\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the RDB instance.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version string\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "minorVersion",
                "name",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDomainRecordGeoIp:getDomainRecordGeoIp": {
            "properties": {
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getDomainRecordGeoIpMatch:getDomainRecordGeoIpMatch"
                    },
                    "description": "The list of matches\n"
                }
            },
            "type": "object",
            "required": [
                "matches"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDomainRecordGeoIpMatch:getDomainRecordGeoIpMatch": {
            "properties": {
                "continents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of continents (eg: EU for Europe, NA for North America, AS for Asia...). List of all continents code: https://api.scaleway.com/domain-private/v2beta1/continents\n"
                },
                "countries": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of countries (eg: FR for France, US for the United States, GB for Great Britain...). List of all countries code: https://api.scaleway.com/domain-private/v2beta1/countries\n"
                },
                "data": {
                    "type": "string",
                    "description": "The content of the record (e.g., an IPv4 address for an `A` record or a string for a `TXT` record). Cannot be used with \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.\n"
                }
            },
            "type": "object",
            "required": [
                "continents",
                "countries",
                "data"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDomainRecordHttpService:getDomainRecordHttpService": {
            "properties": {
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPs to check\n"
                },
                "mustContain": {
                    "type": "string",
                    "description": "Text to search\n"
                },
                "strategy": {
                    "type": "string",
                    "description": "Strategy to return an IP from the IPs list\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL to match the\u003cspan pulumi-lang-nodejs=\" mustContain \" pulumi-lang-dotnet=\" MustContain \" pulumi-lang-go=\" mustContain \" pulumi-lang-python=\" must_contain \" pulumi-lang-yaml=\" mustContain \" pulumi-lang-java=\" mustContain \"\u003e mustContain \u003c/span\u003etext to validate an IP\n"
                },
                "userAgent": {
                    "type": "string",
                    "description": "User-agent used when checking the URL\n"
                }
            },
            "type": "object",
            "required": [
                "ips",
                "mustContain",
                "strategy",
                "url",
                "userAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDomainRecordView:getDomainRecordView": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (e.g., an IPv4 address for an `A` record or a string for a `TXT` record). Cannot be used with \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.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet of the view\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "subnet"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getDomainRecordWeighted:getDomainRecordWeighted": {
            "properties": {
                "ip": {
                    "type": "string",
                    "description": "The weighted IP\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "ip",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getFlexibleIpsIp:getFlexibleIpsIp": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the flexible IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The MAC address ID.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address of the flexible IP\n"
                },
                "macAddresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getFlexibleIpsIpMacAddress:getFlexibleIpsIpMacAddress"
                    },
                    "description": "The MAC address of the Virtual MAC.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the IP is in.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is in.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of virtual MAC.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. IPs with these exact tags are listed.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "id",
                "ipAddress",
                "macAddresses",
                "organizationId",
                "projectId",
                "reverse",
                "status",
                "tags",
                "updatedAt",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getFlexibleIpsIpMacAddress:getFlexibleIpsIpMacAddress": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was created (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The MAC address ID.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the Virtual MAC.\n"
                },
                "macType": {
                    "type": "string",
                    "description": "The type of virtual MAC.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of virtual MAC.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date on which the flexible IP was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "macAddress",
                "macType",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstancePrivateNicPrivateIp:getInstancePrivateNicPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceSecurityGroupInboundRule:getInstanceSecurityGroupInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule apply to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "ip",
                "ipRange",
                "port",
                "portRange",
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceSecurityGroupOutboundRule:getInstanceSecurityGroupOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule apply to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "ip",
                "ipRange",
                "port",
                "portRange",
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServerFilesystem:getInstanceServerFilesystem": {
            "properties": {
                "filesystemId": {
                    "type": "string",
                    "description": "The filesystem ID attached to the server\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the filesystem\n"
                }
            },
            "type": "object",
            "required": [
                "filesystemId",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServerPrivateIp:getInstanceServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServerPrivateNetwork:getInstanceServerPrivateNetwork": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "MAC address of the NIC\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "pnicId": {
                    "type": "string",
                    "description": "The ID of the NIC\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private NIC state\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server exists.\n"
                }
            },
            "type": "object",
            "required": [
                "macAddress",
                "pnId",
                "pnicId",
                "status",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServerPublicIp:getInstanceServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic\n"
                },
                "family": {
                    "type": "string",
                    "description": "IP address family (inet or inet6)\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "Gateway's IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "CIDR netmask\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "Provisioning mode of the IP address\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "dynamic",
                "family",
                "gateway",
                "id",
                "netmask",
                "provisioningMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServerRootVolume:getInstanceServerRootVolume": {
            "properties": {
                "boot": {
                    "type": "boolean",
                    "description": "Set the volume where the boot the server\n"
                },
                "deleteOnTermination": {
                    "type": "boolean",
                    "description": "Forces deletion of the root volume on instance termination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name. Only one 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=\"`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 should be specified.\n"
                },
                "sbsIops": {
                    "type": "integer",
                    "description": "SBS Volume IOPS, only with\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volumeType \u003c/span\u003eas sbs_volume\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "Size of the root volume in gigabytes.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The volume ID of the root volume of the server.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of the root volume\n"
                }
            },
            "type": "object",
            "required": [
                "boot",
                "deleteOnTermination",
                "name",
                "sbsIops",
                "sizeInGb",
                "volumeId",
                "volumeType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServersServer:getInstanceServersServer": {
            "properties": {
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "UUID of the bootscript\n",
                    "deprecationMessage": "bootscript are not supported"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name used as filter. Servers with a name like it are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](https://developers.scaleway.com/en/products/instance/api/#placement-groups-d8f653) the server is attached to.\n"
                },
                "placementGroupPolicyRespected": {
                    "type": "boolean",
                    "description": "Whether the placement group policy respected or not\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getInstanceServersServerPrivateIp:getInstanceServersServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the server is associated with.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getInstanceServersServerPublicIp:getInstanceServersServerPublicIp"
                    },
                    "description": "The list of public IPs of the server\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://developers.scaleway.com/en/products/instance/api/#security-groups-8d7f89) the server is attached to.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. Servers with these exact tags are listed.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which servers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "bootType",
                "bootscriptId",
                "enableDynamicIp",
                "id",
                "image",
                "name",
                "organizationId",
                "placementGroupId",
                "placementGroupPolicyRespected",
                "privateIps",
                "projectId",
                "publicIps",
                "securityGroupId",
                "state",
                "tags",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServersServerPrivateIp:getInstanceServersServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceServersServerPublicIp:getInstanceServersServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic.\n"
                },
                "family": {
                    "type": "string",
                    "description": "IP address family (inet or inet6).\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "Gateway's IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "CIDR netmask.\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "Provisioning mode of the IP address.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "dynamic",
                "family",
                "gateway",
                "id",
                "netmask",
                "provisioningMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getInstanceSnapshotImport:getInstanceSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIotDeviceCertificate:getIotDeviceCertificate": {
            "properties": {
                "crt": {
                    "type": "string",
                    "description": "X509 PEM encoded certificate of the device\n"
                },
                "key": {
                    "type": "string",
                    "description": "X509 PEM encoded key of the device\n"
                }
            },
            "type": "object",
            "required": [
                "crt",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIotDeviceMessageFilter:getIotDeviceMessageFilter": {
            "properties": {
                "publishes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getIotDeviceMessageFilterPublish:getIotDeviceMessageFilterPublish"
                    },
                    "description": "Rule to restrict topics the device can publish to\n"
                },
                "subscribes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getIotDeviceMessageFilterSubscribe:getIotDeviceMessageFilterSubscribe"
                    },
                    "description": "Rule to restrict topics the device can subscribe to\n"
                }
            },
            "type": "object",
            "required": [
                "publishes",
                "subscribes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIotDeviceMessageFilterPublish:getIotDeviceMessageFilterPublish": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Publish message filter policy\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics in the set\n"
                }
            },
            "type": "object",
            "required": [
                "policy",
                "topics"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIotDeviceMessageFilterSubscribe:getIotDeviceMessageFilterSubscribe": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Subscribe message filter policy\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics in the set\n"
                }
            },
            "type": "object",
            "required": [
                "policy",
                "topics"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIpamIpResource:getIpamIpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the resource that the IP is attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the resource the IP is attached to.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the resource the IP is attached to. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:index/getIpamIpsIp:getIpamIpsIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The Scaleway internal IP address of the resource.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the resource.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project to filter for.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region to filter for.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getIpamIpsIpResource:getIpamIpsIpResource"
                    },
                    "description": "Filter for a resource attached to the IP, using resource ID, type or name.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IP tags to filter for.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the IP.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "projectId",
                "region",
                "resources",
                "tags",
                "updatedAt",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIpamIpsIpResource:getIpamIpsIpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the attached resource.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The linked MAC address to filter for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the attached resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the attached resource. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "macAddress",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getIpamIpsResource:getIpamIpsResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the attached resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the attached resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the attached resource. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:index/getKeyManagerKeyRotationPolicy:getKeyManagerKeyRotationPolicy": {
            "properties": {
                "nextRotationAt": {
                    "type": "string",
                    "description": "Timestamp indicating the next scheduled rotation.\n"
                },
                "rotationPeriod": {
                    "type": "string",
                    "description": "Time interval between two key rotations. The minimum duration is 24 hours and the maximum duration is 1 year (876000 hours).\n"
                }
            },
            "type": "object",
            "required": [
                "nextRotationAt",
                "rotationPeriod"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesClusterAutoUpgrade:getKubernetesClusterAutoUpgrade": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "True if Kubernetes patch version auto upgrades is enabled.\n"
                },
                "maintenanceWindowDay": {
                    "type": "string",
                    "description": "The day of the auto upgrade maintenance window (\u003cspan pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\"\u003e`monday`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\"\u003e`sunday`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e).\n"
                },
                "maintenanceWindowStartHour": {
                    "type": "integer",
                    "description": "The start hour (UTC) of the 2-hour auto upgrade maintenance window (0 to 23).\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "maintenanceWindowDay",
                "maintenanceWindowStartHour"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesClusterAutoscalerConfig:getKubernetesClusterAutoscalerConfig": {
            "properties": {
                "balanceSimilarNodeGroups": {
                    "type": "boolean",
                    "description": "True if detecting similar node groups and balance the number of nodes between them is enabled.\n"
                },
                "disableScaleDown": {
                    "type": "boolean",
                    "description": "True if the scale down feature of the autoscaler is disabled.\n"
                },
                "estimator": {
                    "type": "string",
                    "description": "The type of resource estimator used in scale up.\n"
                },
                "expander": {
                    "type": "string",
                    "description": "The type of node group expander be used in scale up.\n"
                },
                "expendablePodsPriorityCutoff": {
                    "type": "integer",
                    "description": "Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they don't cause scale up. Pods with null priority (PodPriority disabled) are non expendable.\n"
                },
                "ignoreDaemonsetsUtilization": {
                    "type": "boolean",
                    "description": "True if ignoring DaemonSet pods when calculating resource utilization for scaling down is enabled.\n"
                },
                "maxGracefulTerminationSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node\n"
                },
                "scaleDownDelayAfterAdd": {
                    "type": "string",
                    "description": "The duration after scale up that scale down evaluation resumes.\n"
                },
                "scaleDownUnneededTime": {
                    "type": "string",
                    "description": "The duration a node should be unneeded before it is eligible for scale down.\n"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number",
                    "description": "Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down\n"
                }
            },
            "type": "object",
            "required": [
                "balanceSimilarNodeGroups",
                "disableScaleDown",
                "estimator",
                "expander",
                "expendablePodsPriorityCutoff",
                "ignoreDaemonsetsUtilization",
                "maxGracefulTerminationSec",
                "scaleDownDelayAfterAdd",
                "scaleDownUnneededTime",
                "scaleDownUtilizationThreshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesClusterKubeconfig:getKubernetesClusterKubeconfig": {
            "properties": {
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The CA certificate of the Kubernetes API server.\n"
                },
                "configFile": {
                    "type": "string",
                    "description": "The raw kubeconfig file.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the Kubernetes API server.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The token to connect to the Kubernetes API server.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterCaCertificate",
                "configFile",
                "host",
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesClusterOpenIdConnectConfig:getKubernetesClusterOpenIdConnectConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "A client id that all tokens must be issued for\n"
                },
                "groupsClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "JWT claim to use as the user's group\n"
                },
                "groupsPrefix": {
                    "type": "string",
                    "description": "Prefix prepended to group claims\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "URL of the provider which allows the API server to discover public signing keys\n"
                },
                "requiredClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Multiple key=value pairs that describes a required claim in the ID Token\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "JWT claim to use as the user name\n"
                },
                "usernamePrefix": {
                    "type": "string",
                    "description": "Prefix prepended to username\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "groupsClaims",
                "groupsPrefix",
                "issuerUrl",
                "requiredClaims",
                "usernameClaim",
                "usernamePrefix"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesNodePoolNode:getKubernetesNodePoolNode": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the pool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The pool name. Only one 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=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`poolId`\u003c/span\u003e should be specified. \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 should be specified with \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getKubernetesNodePoolNodePrivateIp:getKubernetesNodePoolNodePrivateIp"
                    },
                    "description": "List of private IPv4 and IPv6 addresses associated with the node\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "The public IPv4.\n"
                },
                "publicIpV6": {
                    "type": "string",
                    "description": "The public IPv6.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the node.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name",
                "privateIps",
                "publicIp",
                "publicIpV6",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesNodePoolNodePrivateIp:getKubernetesNodePoolNodePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the pool.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getKubernetesNodePoolUpgradePolicy:getKubernetesNodePoolUpgradePolicy": {
            "properties": {
                "maxSurge": {
                    "type": "integer",
                    "description": "The maximum number of nodes to be created during the upgrade\n"
                },
                "maxUnavailable": {
                    "type": "integer",
                    "description": "The maximum number of nodes that can be not ready at the same time\n"
                }
            },
            "type": "object",
            "required": [
                "maxSurge",
                "maxUnavailable"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbAclsAcl:getLbAclsAcl": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbAclsAclAction:getLbAclsAclAction"
                    },
                    "description": "The action to be undertaken when an ACL filter matches.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the ACL was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the ACL resource.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The frontend ID this ACL is attached to. ACLs with a matching frontend ID are listed.\n\u003e **Important:** LB frontend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated ACL ID.\n\u003e **Important:** LB ACLs' IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "index": {
                    "type": "integer",
                    "description": "The priority of this ACL in the ordered list.\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbAclsAclMatch:getLbAclsAclMatch"
                    },
                    "description": "The ACL match rule.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name to filter for. ACLs with a matching name are listed.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the ACL was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "createdAt",
                "description",
                "frontendId",
                "id",
                "index",
                "matches",
                "name",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbAclsAclAction:getLbAclsAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbAclsAclActionRedirect:getLbAclsAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type.\n"
                }
            },
            "type": "object",
            "required": [
                "redirects",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbAclsAclActionRedirect:getLbAclsAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use.\n"
                },
                "target": {
                    "type": "string",
                    "description": "The URL used in case of a location redirect, or the scheme name that replaces the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbAclsAclMatch:getLbAclsAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "A list of possible values for the HTTP filter based on the HTTP header.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The possible values to match for a given HTTP filter.\n"
                },
                "invert": {
                    "type": "boolean",
                    "description": "The condition will be of type \"unless\" if invert is 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\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched.\n"
                }
            },
            "type": "object",
            "required": [
                "httpFilter",
                "httpFilterOption",
                "httpFilterValues",
                "invert",
                "ipSubnets",
                "ipsEdgeServices"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbBackendHealthCheckHttp:getLbBackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTPS endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "hostHeader",
                "method",
                "sni",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbBackendHealthCheckTcp:getLbBackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:index/getLbBackendsBackend:getLbBackendsBackend": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the backend was created (RFC 3339 format).\n"
                },
                "failoverHost": {
                    "type": "string",
                    "description": "Scaleway S3 bucket website to be served if all backend servers are down.\n"
                },
                "forwardPort": {
                    "type": "integer",
                    "description": "User sessions will be forwarded to this backend server port.\n"
                },
                "forwardPortAlgorithm": {
                    "type": "string",
                    "description": "Load balancing algorithm.\n"
                },
                "forwardProtocol": {
                    "type": "string",
                    "description": "Backend protocol.\n"
                },
                "healthCheckDelay": {
                    "type": "string",
                    "description": "Interval between two health check requests.\n"
                },
                "healthCheckHttp": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbBackendsBackendHealthCheckHttp:getLbBackendsBackendHealthCheckHttp"
                    },
                    "description": "This block enables HTTP health checks.\n"
                },
                "healthCheckHttps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbBackendsBackendHealthCheckHttp:getLbBackendsBackendHealthCheckHttp"
                    },
                    "description": "This block enables HTTPS health checks.\n"
                },
                "healthCheckMaxRetries": {
                    "type": "integer",
                    "description": "Number of allowed failed health check requests before the backend server is marked as down.\n"
                },
                "healthCheckPort": {
                    "type": "integer",
                    "description": "Port the health check requests will be sent to.\n"
                },
                "healthCheckTcps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbBackendsBackendHealthCheckTcp:getLbBackendsBackendHealthCheckTcp"
                    },
                    "description": "This block enables TCP health checks.\n"
                },
                "healthCheckTimeout": {
                    "type": "string",
                    "description": "Timeout before a health check request is considered failed.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated backend ID.\n"
                },
                "ignoreSslServerVerify": {
                    "type": "boolean",
                    "description": "Specifies whether the Load Balancer should check the backend server’s certificate before initiating a connection.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The Load Balancer ID this backend is attached to. Backends with a matching ID are listed.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The backend name to filter for. Backends with a matching name are listed.\n"
                },
                "onMarkedDownAction": {
                    "type": "string",
                    "description": "Modify what occurs when a backend server is marked down.\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "The type of PROXY protocol.\n"
                },
                "serverIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of backend server IP addresses.\n"
                },
                "sslBridging": {
                    "type": "boolean",
                    "description": "Enables SSL between Load Balancer and backend servers.\n"
                },
                "stickySessions": {
                    "type": "string",
                    "description": "Enables cookie-based session persistence.\n"
                },
                "stickySessionsCookieName": {
                    "type": "string",
                    "description": "Cookie name for sticky sessions.\n"
                },
                "timeoutConnect": {
                    "type": "string",
                    "description": "Maximum initial server connection establishment time.\n"
                },
                "timeoutServer": {
                    "type": "string",
                    "description": "Maximum server connection inactivity time.\n"
                },
                "timeoutTunnel": {
                    "type": "string",
                    "description": "Maximum tunnel inactivity time.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the backend was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "failoverHost",
                "forwardPort",
                "forwardPortAlgorithm",
                "forwardProtocol",
                "healthCheckDelay",
                "healthCheckHttp",
                "healthCheckHttps",
                "healthCheckMaxRetries",
                "healthCheckPort",
                "healthCheckTcps",
                "healthCheckTimeout",
                "id",
                "ignoreSslServerVerify",
                "lbId",
                "name",
                "onMarkedDownAction",
                "proxyProtocol",
                "serverIps",
                "sslBridging",
                "stickySessions",
                "stickySessionsCookieName",
                "timeoutConnect",
                "timeoutServer",
                "timeoutTunnel",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbBackendsBackendHealthCheckHttp:getLbBackendsBackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code.\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for health check requests.\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for health check requests.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The path of health check requests.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "hostHeader",
                "method",
                "sni",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbBackendsBackendHealthCheckTcp:getLbBackendsBackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:index/getLbFrontendAcl:getLbFrontendAcl": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbFrontendAclAction:getLbFrontendAclAction"
                    },
                    "description": "Action to undertake when an ACL filter matches\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's creation (RFC 3339 format)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the ACL\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbFrontendAclMatch:getLbFrontendAclMatch"
                    },
                    "description": "The ACL match rule\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the frontend.\n- When using 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 you should specify the `lb-id`\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's update (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "createdAt",
                "description",
                "matches",
                "name",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbFrontendAclAction:getLbFrontendAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbFrontendAclActionRedirect:getLbFrontendAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type\n"
                }
            },
            "type": "object",
            "required": [
                "redirects",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbFrontendAclActionRedirect:getLbFrontendAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use\n"
                },
                "target": {
                    "type": "string",
                    "description": "An URL can be used in case of a location redirect\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbFrontendAclMatch:getLbFrontendAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "You can use this field with\u003cspan pulumi-lang-nodejs=\" httpHeaderMatch \" pulumi-lang-dotnet=\" HttpHeaderMatch \" pulumi-lang-go=\" httpHeaderMatch \" pulumi-lang-python=\" http_header_match \" pulumi-lang-yaml=\" httpHeaderMatch \" pulumi-lang-java=\" httpHeaderMatch \"\u003e httpHeaderMatch \u003c/span\u003eacl type to set the header name to filter\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter\n"
                },
                "invert": {
                    "type": "boolean",
                    "description": "If set to true, the condition will be of type \"unless\"\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs or CIDR v4/v6 addresses of the client of the session to match\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched\n"
                }
            },
            "type": "object",
            "required": [
                "httpFilter",
                "httpFilterOption",
                "httpFilterValues",
                "invert",
                "ipSubnets",
                "ipsEdgeServices"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbFrontendsFrontend:getLbFrontendsFrontend": {
            "properties": {
                "backendId": {
                    "type": "string",
                    "description": "The Load Balancer backend ID this frontend is attached to.\n\u003e **Important:** Load Balancer backend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "certificateIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of certificate IDs that are used by the frontend.\n"
                },
                "connectionRateLimit": {
                    "type": "integer",
                    "description": "The rate limit for new connections established on this frontend. Use 0 value to disable, else value is connections per second.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the frontend was created (RFC 3339 format).\n"
                },
                "enableAccessLogs": {
                    "type": "boolean",
                    "description": "Defines whether to enable access logs on the frontend.\n"
                },
                "enableHttp3": {
                    "type": "boolean",
                    "description": "Whether HTTP/3 protocol is activated.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the associated frontend.\n\u003e **Important:** LB frontend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "inboundPort": {
                    "type": "integer",
                    "description": "TCP port the frontend listens to.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The Load Balancer ID this frontend is attached to. Frontends with a matching ID are listed.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The frontend name to filter for. Frontends with a matching name are listed.\n"
                },
                "timeoutClient": {
                    "type": "string",
                    "description": "Maximum inactivity time on the client side.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the frontend was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "backendId",
                "certificateIds",
                "connectionRateLimit",
                "createdAt",
                "enableAccessLogs",
                "enableHttp3",
                "id",
                "inboundPort",
                "lbId",
                "name",
                "timeoutClient",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbIpsIp:getLbIpsIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the associated IP.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The ID of the associated Load BalancerD, if any\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. IPs with these exact tags are listed.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ipAddress",
                "lbId",
                "organizationId",
                "projectId",
                "reverse",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbRoutesRoute:getLbRoutesRoute": {
            "properties": {
                "backendId": {
                    "type": "string",
                    "description": "The backend ID to redirect to\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the route was created (RFC 3339 format).\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The frontend ID (the origin of the redirection), to filter for. Routes with a matching frontend ID are listed.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated route ID.\n"
                },
                "matchHostHeader": {
                    "type": "string",
                    "description": "Specifies the host of the server to which the request is being sent.\n"
                },
                "matchSni": {
                    "type": "string",
                    "description": "Server Name Indication TLS extension field from an incoming connection made via an SSL/TLS transport layer.\n"
                },
                "matchSubdomains": {
                    "type": "boolean",
                    "description": "If true, all subdomains will match.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the route was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "backendId",
                "createdAt",
                "frontendId",
                "id",
                "matchHostHeader",
                "matchSni",
                "matchSubdomains",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbsLb:getLbsLb": {
            "properties": {
                "backendCount": {
                    "type": "integer",
                    "description": "Number of backends the Load Balancer has.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Load Balancer.\n"
                },
                "frontendCount": {
                    "type": "integer",
                    "description": "Number of frontends the Load Balancer has.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "instances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbsLbInstance:getLbsLbInstance"
                    },
                    "description": "List of underlying Instances.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getLbsLbIp:getLbsLbIp"
                    },
                    "description": "List of IPs attached to the Load Balancer.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Load Balancer name to filter for. Load Balancers with a matching name are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "privateNetworkCount": {
                    "type": "integer",
                    "description": "Number of Private Networks attached to the Load balancer.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "routeCount": {
                    "type": "integer",
                    "description": "Number of routes the Load balancer has.\n"
                },
                "sslCompatibilityLevel": {
                    "type": "string",
                    "description": "Determines the minimal SSL version which needs to be supported on the client side.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the Load Balancer Instance. Possible values are: \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e.\n"
                },
                "subscriber": {
                    "type": "string",
                    "description": "The subscriber information.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. Load Balancers with these exact tags are listed.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The offer type of the Load Balancer.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was updated.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "backendCount",
                "createdAt",
                "description",
                "frontendCount",
                "id",
                "instances",
                "ips",
                "name",
                "organizationId",
                "privateNetworkCount",
                "projectId",
                "routeCount",
                "sslCompatibilityLevel",
                "status",
                "subscriber",
                "tags",
                "type",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbsLbInstance:getLbsLbInstance": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was created.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address of the instance\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the Load Balancer Instance. Possible values are: \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was updated.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "ipAddress",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLbsLbIp:getLbsLbIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "UUID of the load balancer attached to the IP\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "Reverse DNS attached to the IP\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ipAddress",
                "lbId",
                "organizationId",
                "projectId",
                "reverse"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLoadbalancerCertificateCustomCertificate:getLoadbalancerCertificateCustomCertificate": {
            "properties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted certificate chain\n"
                }
            },
            "type": "object",
            "required": [
                "certificateChain"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLoadbalancerCertificateLetsencrypt:getLoadbalancerCertificateLetsencrypt": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The main domain name of the certificate\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The alternative domain names of the certificate\n"
                }
            },
            "type": "object",
            "required": [
                "commonName",
                "subjectAlternativeNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLoadbalancerPrivateIp:getLoadbalancerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getLoadbalancerPrivateNetwork:getLoadbalancerPrivateNetwork": {
            "properties": {
                "dhcpConfig": {
                    "type": "boolean",
                    "description": "Set to true if you want to let DHCP assign IP addresses\n"
                },
                "ipamIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ID of a pre-reserved IP address to assign to the Load Balancer on this Private Network\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "staticConfigs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Define an IP address in the subnet of your private network that will be assigned to your load balancer instance\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of private network connection\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancer exists.\n"
                }
            },
            "type": "object",
            "required": [
                "dhcpConfig",
                "ipamIds",
                "privateNetworkId",
                "staticConfigs",
                "status",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getMongoDbInstancePrivateIp:getMongoDbInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getMongoDbInstancePrivateNetwork:getMongoDbInstancePrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP addresses for your endpoint\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecords",
                "id",
                "ips",
                "pnId",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getMongoDbInstancePublicNetwork:getMongoDbInstancePublicNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "The DNS record of your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecord",
                "id",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getObjectBucketCorsRule:getObjectBucketCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed headers in the CORS rule\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed HTTP methods allowed in the CORS rule\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed origins allowed in the CORS rule\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Exposed headers in the CORS rule\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "Max age of the CORS rule\n"
                }
            },
            "type": "object",
            "required": [
                "allowedHeaders",
                "allowedMethods",
                "allowedOrigins",
                "exposeHeaders",
                "maxAgeSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getObjectBucketLifecycleRule:getObjectBucketLifecycleRule": {
            "properties": {
                "abortIncompleteMultipartUploadDays": {
                    "type": "integer",
                    "description": "Specifies the number of days after initiating a multipart upload when the multipart upload must be completed\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Specifies if the configuration rule is Enabled or Disabled\n"
                },
                "expirations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getObjectBucketLifecycleRuleExpiration:getObjectBucketLifecycleRuleExpiration"
                    },
                    "description": "Specifies a period in the object's expire\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the bucket.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The prefix identifying one or more objects to which the rule applies\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tags associated with the bucket lifecycle\n"
                },
                "transitions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getObjectBucketLifecycleRuleTransition:getObjectBucketLifecycleRuleTransition"
                    },
                    "description": "Define when objects transition to another storage class\n"
                }
            },
            "type": "object",
            "required": [
                "abortIncompleteMultipartUploadDays",
                "enabled",
                "expirations",
                "id",
                "prefix",
                "tags",
                "transitions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getObjectBucketLifecycleRuleExpiration:getObjectBucketLifecycleRuleExpiration": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect\n"
                }
            },
            "type": "object",
            "required": [
                "days"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getObjectBucketLifecycleRuleTransition:getObjectBucketLifecycleRuleTransition": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway Object Storage class to which you want the object to transition\n"
                }
            },
            "type": "object",
            "required": [
                "days",
                "storageClass"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getObjectBucketVersioning:getObjectBucketVersioning": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getRedisClusterAcl:getRedisClusterAcl": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the rule.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 network address of the rule in CIDR notation (IPv6 is not supported by the Scaleway API).\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "id",
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getRedisClusterPrivateIp:getRedisClusterPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getRedisClusterPrivateNetwork:getRedisClusterPrivateNetwork": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "serviceIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the private network in CIDR notation (IPv6 is not supported by the Scaleway API)\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\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) The zone in which the server exists.\n"
                }
            },
            "type": "object",
            "required": [
                "endpointId",
                "id",
                "ips",
                "port",
                "serviceIps",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getRedisClusterPublicNetwork:getRedisClusterPublicNetwork": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ips",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getSecretEphemeralPolicy:getSecretEphemeralPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action to perform when the version of a secret expires.\n"
                },
                "expiresOnceAccessed": {
                    "type": "boolean",
                    "description": "True if the secret version expires after a single user access.\n"
                },
                "ttl": {
                    "type": "string",
                    "description": "Time frame, from one second and up to one year, during which the secret's versions are valid. Has to be specified in Go Duration format\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "expiresOnceAccessed",
                "ttl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getSecretVersion:getSecretVersion": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of secret version's creation (RFC 3339 format)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret version\n"
                },
                "latest": {
                    "type": "boolean",
                    "description": "Returns true if the version is the latest.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The revision of secret version\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the secret.\nOnly one 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=\"`secretId`\" pulumi-lang-dotnet=\"`SecretId`\" pulumi-lang-go=\"`secretId`\" pulumi-lang-python=\"`secret_id`\" pulumi-lang-yaml=\"`secretId`\" pulumi-lang-java=\"`secretId`\"\u003e`secretId`\u003c/span\u003e should be specified.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the secret version\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of secret version's creation (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "latest",
                "revision",
                "secretId",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getTemDomainReputation:getTemDomainReputation": {
            "properties": {
                "previousScore": {
                    "type": "integer",
                    "description": "The previously-calculated domain's reputation score\n"
                },
                "previousScoredAt": {
                    "type": "string",
                    "description": "Time and date the previous reputation score was calculated\n"
                },
                "score": {
                    "type": "integer",
                    "description": "A range from 0 to 100 that determines your domain's reputation score\n"
                },
                "scoredAt": {
                    "type": "string",
                    "description": "Time and date the score was calculated\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the domain's reputation\n"
                }
            },
            "type": "object",
            "required": [
                "previousScore",
                "previousScoredAt",
                "score",
                "scoredAt",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcGatewayNetworkIpamConfig:getVpcGatewayNetworkIpamConfig": {
            "properties": {
                "ipamIpId": {
                    "type": "string",
                    "description": "Use this IPAM-booked IP ID as the Gateway's IP in this Private Network\n"
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Defines whether the default route is enabled on that Gateway Network\n"
                }
            },
            "type": "object",
            "required": [
                "ipamIpId",
                "pushDefaultRoute"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcGatewayNetworkPrivateIp:getVpcGatewayNetworkPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcPrivateNetworkIpv4Subnet:getVpcPrivateNetworkIpv4Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in dotted decimal notation, e.g., '192.168.0.0' for a '192.168.0.0/24' subnet\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 24 for a 255.255.255.0 mask\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR\n"
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "prefixLength",
                "subnet",
                "subnetMask",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcPrivateNetworkIpv6Subnet:getVpcPrivateNetworkIpv6Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in dotted decimal notation, e.g., '192.168.0.0' for a '192.168.0.0/24' subnet\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 24 for a 255.255.255.0 mask\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR\n"
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "prefixLength",
                "subnet",
                "subnetMask",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcRoutesRoute:getVpcRoutesRoute": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the route was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the route.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination IP or IP range of the route.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the route.\n\u003e **Important:** route IDs are regional, which means they are of the form `{region}/{id}`, e.g. `fr-par/11111111-1111-1111-1111-111111111111\n"
                },
                "nexthopIp": {
                    "type": "string",
                    "description": "The IP of the route's next hop.\n"
                },
                "nexthopName": {
                    "type": "string",
                    "description": "The name of the route's next hop.\n"
                },
                "nexthopPrivateNetworkId": {
                    "type": "string",
                    "description": "The next hop private network ID to filter for. routes with a similar next hop private network ID are listed.\n"
                },
                "nexthopResourceId": {
                    "type": "string",
                    "description": "The next hop resource ID to filter for. routes with a similar next hop resource ID are listed.\n"
                },
                "nexthopResourceType": {
                    "type": "string",
                    "description": "The next hop resource type to filter for. routes with a similar next hop resource type are listed.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the routes exist.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. routes with these exact tags are listed.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC ID to filter for. routes with a similar VPC ID are listed.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "destination",
                "id",
                "nexthopIp",
                "nexthopName",
                "nexthopPrivateNetworkId",
                "nexthopResourceId",
                "nexthopResourceType",
                "tags",
                "vpcId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getVpcsVpc:getVpcsVpc": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of VPC's creation (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated VPC ID.\n\u003e **Important:** VPC IDs are regional, which means they are of the form `{region}/{id}`, e.g. `fr-par/11111111-1111-1111-1111-111111111111\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Defines whether the VPC is the default one for its Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The VPC name to filter for. VPCs with a similar name are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the VPC is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the VPC is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the VPCs exist.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. VPCs with these exact tags are listed.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "Date on which the VPC was last updated (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "isDefault",
                "name",
                "organizationId",
                "projectId",
                "tags",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebHostOfferOffer:getWebHostOfferOffer": {
            "properties": {
                "available": {
                    "type": "boolean",
                    "description": "Indicates if the offer is available.\n"
                },
                "billingOperationPath": {
                    "type": "string",
                    "description": "The billing operation identifier for the option.\n"
                },
                "controlPanelName": {
                    "type": "string",
                    "description": "The name of the control panel (e.g., Cpanel or Plesk).\n"
                },
                "endOfLife": {
                    "type": "boolean",
                    "description": "Indicates if the offer is deprecated or no longer supported.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the option.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/getWebHostOfferOfferOption:getWebHostOfferOfferOption"
                    },
                    "description": "A list of available options for the offer:\n"
                },
                "price": {
                    "type": "string",
                    "description": "The offer price.\n"
                },
                "quotaWarning": {
                    "type": "string",
                    "description": "Warning information regarding quota limitations for the option.\n"
                }
            },
            "type": "object",
            "required": [
                "available",
                "billingOperationPath",
                "controlPanelName",
                "endOfLife",
                "id",
                "name",
                "options",
                "price",
                "quotaWarning"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebHostOfferOfferOption:getWebHostOfferOfferOption": {
            "properties": {
                "billingOperationPath": {
                    "type": "string",
                    "description": "The billing operation identifier for the option.\n"
                },
                "currentValue": {
                    "type": "integer",
                    "description": "The current value set for the option.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the option.\n"
                },
                "maxValue": {
                    "type": "integer",
                    "description": "The maximum allowed value for the option.\n"
                },
                "minValue": {
                    "type": "integer",
                    "description": "The minimum value for the option.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "price": {
                    "type": "string",
                    "description": "The offer price.\n"
                },
                "quotaWarning": {
                    "type": "string",
                    "description": "Warning information regarding quota limitations for the option.\n"
                }
            },
            "type": "object",
            "required": [
                "billingOperationPath",
                "currentValue",
                "id",
                "maxValue",
                "minValue",
                "name",
                "price",
                "quotaWarning"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebHostOfferProduct:getWebHostOfferProduct": {
            "properties": {
                "databasesQuota": {
                    "type": "integer",
                    "description": "The quota of databases.\n"
                },
                "emailAccountsQuota": {
                    "type": "integer",
                    "description": "The quota of email accounts.\n"
                },
                "emailStorageQuota": {
                    "type": "integer",
                    "description": "The quota of email storage.\n"
                },
                "hostingStorageQuota": {
                    "type": "integer",
                    "description": "The quota of hosting storage.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The offer name. Only one 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=\"`offerId`\" pulumi-lang-dotnet=\"`OfferId`\" pulumi-lang-go=\"`offerId`\" pulumi-lang-python=\"`offer_id`\" pulumi-lang-yaml=\"`offerId`\" pulumi-lang-java=\"`offerId`\"\u003e`offerId`\u003c/span\u003e should be specified.\n"
                },
                "option": {
                    "type": "boolean",
                    "description": "The product option.\n"
                },
                "ram": {
                    "type": "integer",
                    "description": "The capacity of the memory in GB.\n"
                },
                "supportIncluded": {
                    "type": "boolean",
                    "description": "If support is included.\n"
                },
                "vCpu": {
                    "type": "integer",
                    "description": "The number of cores.\n"
                }
            },
            "type": "object",
            "required": [
                "databasesQuota",
                "emailAccountsQuota",
                "emailStorageQuota",
                "hostingStorageQuota",
                "name",
                "option",
                "ram",
                "supportIncluded",
                "vCpu"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebhostingCpanelUrl:getWebhostingCpanelUrl": {
            "properties": {
                "dashboard": {
                    "type": "string",
                    "description": "URL to connect to dashboard interface\n"
                },
                "webmail": {
                    "type": "string",
                    "description": "URL to connect to Webmail interface\n"
                }
            },
            "type": "object",
            "required": [
                "dashboard",
                "webmail"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebhostingNameServer:getWebhostingNameServer": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the server\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Whether or not the webhosting is the default one\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the nameserver\n"
                }
            },
            "type": "object",
            "required": [
                "hostname",
                "isDefault",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebhostingOption:getWebhostingOption": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the active option\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the option\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:index/getWebhostingRecord:getWebhostingRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the DNS record\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of DNS records associated with the webhosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the hosting record\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time to live in seconds of the record\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the DNS record\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the DNS record\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "priority",
                "status",
                "ttl",
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:inference/DeploymentPrivateEndpoint:DeploymentPrivateEndpoint": {
            "properties": {
                "disableAuth": {
                    "type": "boolean",
                    "description": "Disable the authentication on the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network to use.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Optional) The URL of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "url"
                    ]
                }
            }
        },
        "scaleway:inference/DeploymentPrivateIp:DeploymentPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:inference/DeploymentPublicEndpoint:DeploymentPublicEndpoint": {
            "properties": {
                "disableAuth": {
                    "type": "boolean",
                    "description": "Disable the authentication on the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional) The id of the public endpoint.\n"
                },
                "isEnabled": {
                    "type": "boolean",
                    "description": "Enable or disable public endpoint.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Optional) The URL of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "url"
                    ]
                }
            }
        },
        "scaleway:inference/ModelNodesSupport:ModelNodesSupport": {
            "properties": {
                "nodeTypeName": {
                    "type": "string",
                    "description": "The type of node supported.\n"
                },
                "quantizations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:inference/ModelNodesSupportQuantization:ModelNodesSupportQuantization"
                    },
                    "description": "A list of supported quantization options, including:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nodeTypeName",
                        "quantizations"
                    ]
                }
            }
        },
        "scaleway:inference/ModelNodesSupportQuantization:ModelNodesSupportQuantization": {
            "properties": {
                "allowed": {
                    "type": "boolean",
                    "description": "Whether this quantization is allowed.\n"
                },
                "maxContextSize": {
                    "type": "integer",
                    "description": "Maximum context length supported by this quantization.\n"
                },
                "quantizationBits": {
                    "type": "integer",
                    "description": "Number of bits used for quantization (e.g., 8, 16).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allowed",
                        "maxContextSize",
                        "quantizationBits"
                    ]
                }
            }
        },
        "scaleway:inference/getModelNodesSupport:getModelNodesSupport": {
            "properties": {
                "nodeTypeName": {
                    "type": "string",
                    "description": "The type of node supported.\n"
                },
                "quantizations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:inference/getModelNodesSupportQuantization:getModelNodesSupportQuantization"
                    },
                    "description": "A list of supported quantization options, including:\n"
                }
            },
            "type": "object",
            "required": [
                "nodeTypeName",
                "quantizations"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:inference/getModelNodesSupportQuantization:getModelNodesSupportQuantization": {
            "properties": {
                "allowed": {
                    "type": "boolean",
                    "description": "Whether this quantization is allowed.\n"
                },
                "maxContextSize": {
                    "type": "integer",
                    "description": "Maximum context length supported by this quantization.\n"
                },
                "quantizationBits": {
                    "type": "integer",
                    "description": "Number of bits used for quantization (e.g., 8, 16).\n"
                }
            },
            "type": "object",
            "required": [
                "allowed",
                "maxContextSize",
                "quantizationBits"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/ImageAdditionalVolume:ImageAdditionalVolume": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server containing the volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "server": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Description of the server containing the volume (in case the image is a backup from a server).\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume, possible values are \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sbsSnapshot`\" pulumi-lang-dotnet=\"`SbsSnapshot`\" pulumi-lang-go=\"`sbsSnapshot`\" pulumi-lang-python=\"`sbs_snapshot`\" pulumi-lang-yaml=\"`sbsSnapshot`\" pulumi-lang-java=\"`sbsSnapshot`\"\u003e`sbsSnapshot`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "server",
                        "size",
                        "tags",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:instance/ImageRootVolume:ImageRootVolume": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the server containing the volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the volume.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume, possible values are \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sbsSnapshot`\" pulumi-lang-dotnet=\"`SbsSnapshot`\" pulumi-lang-go=\"`sbsSnapshot`\" pulumi-lang-python=\"`sbs_snapshot`\" pulumi-lang-yaml=\"`sbsSnapshot`\" pulumi-lang-java=\"`sbsSnapshot`\"\u003e`sbsSnapshot`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "size",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:instance/PrivateNicPrivateIp:PrivateNicPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:instance/SecurityGroupInboundRule:SecurityGroupInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule applies to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule applies to. If no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, the rule will apply to all port. Only one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Need terraform \u003e= 0.13.0 (Optional) The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:instance/SecurityGroupOutboundRule:SecurityGroupOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action when rule match request (drop or accept)\n"
                },
                "ip": {
                    "type": "string",
                    "description": "Ip address for this rule (e.g: 1.1.1.1). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "Ip range for this rule (e.g: 192.168.1.0/24). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Network port for this rule\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Computed port range for this rule (e.g: 1-1024, 22-22)\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for this rule (TCP, UDP, ICMP or ANY)\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:instance/SecurityGroupRulesInboundRule:SecurityGroupRulesInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule applies to. If no \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 nor \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e are specified, rule will apply to all ip. Only one of \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 and \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ipRange`\u003c/span\u003e should be specified.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Need terraform \u003e= 0.13.0 (Optional) The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:instance/SecurityGroupRulesOutboundRule:SecurityGroupRulesOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action when rule match request (drop or accept)\n"
                },
                "ip": {
                    "type": "string",
                    "description": "Ip address for this rule (e.g: 1.1.1.1). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n",
                    "deprecationMessage": "Ip address is deprecated. Please use\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003einstead"
                },
                "ipRange": {
                    "type": "string",
                    "description": "Ip range for this rule (e.g: 192.168.1.0/24). Only one of ip or\u003cspan pulumi-lang-nodejs=\" ipRange \" pulumi-lang-dotnet=\" IpRange \" pulumi-lang-go=\" ipRange \" pulumi-lang-python=\" ip_range \" pulumi-lang-yaml=\" ipRange \" pulumi-lang-java=\" ipRange \"\u003e ipRange \u003c/span\u003eshould be provided\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Network port for this rule\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "Computed port range for this rule (e.g: 1-1024, 22-22)\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for this rule (TCP, UDP, ICMP or ANY)\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:instance/ServerFilesystem:ServerFilesystem": {
            "properties": {
                "filesystemId": {
                    "type": "string",
                    "description": "The unique ID of the filesystem attached to the server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the filesystem\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "status"
                    ]
                }
            }
        },
        "scaleway:instance/ServerPrivateIp:ServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:instance/ServerPrivateNetwork:ServerPrivateNetwork": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "MAC address of the NIC\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "pnicId": {
                    "type": "string",
                    "description": "The ID of the NIC\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private NIC state\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "macAddress",
                        "pnId",
                        "pnicId",
                        "status"
                    ]
                }
            }
        },
        "scaleway:instance/ServerPublicIp:ServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP.\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic.\n"
                },
                "family": {
                    "type": "string",
                    "description": "The IP address' family.\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "The IP of the Gateway associated with the IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP.\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "The CIDR netmask of the IP.\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "The provisioning mode of the IP\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "dynamic",
                        "family",
                        "gateway",
                        "id",
                        "netmask",
                        "provisioningMode"
                    ]
                }
            }
        },
        "scaleway:instance/ServerRootVolume:ServerRootVolume": {
            "properties": {
                "boot": {
                    "type": "boolean",
                    "description": "Set the volume where the boot the server\n"
                },
                "deleteOnTermination": {
                    "type": "boolean",
                    "description": "Forces deletion of the root volume on instance termination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the root volume.\n"
                },
                "sbsIops": {
                    "type": "integer",
                    "description": "Choose IOPS of your sbs volume, has to be used with \u003cspan pulumi-lang-nodejs=\"`sbsVolume`\" pulumi-lang-dotnet=\"`SbsVolume`\" pulumi-lang-go=\"`sbsVolume`\" pulumi-lang-python=\"`sbs_volume`\" pulumi-lang-yaml=\"`sbsVolume`\" pulumi-lang-java=\"`sbsVolume`\"\u003e`sbsVolume`\u003c/span\u003e for root volume type.\n\n\u003e **Important:** It is not possible to change `root_volume.size_in_gb` for local volumes (\u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e). Changes to this field will recreate the server.\nIt is possible to increase `root_volume.size_in_gb` for SBS volumes, but they cannot be resized down without recreating the server.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "Size of the root volume in gigabytes.\nTo find the right size use [this endpoint](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances) and\ncheck the `volumes_constraint.{min|max}_size` (in bytes) for your \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e.\nDepending on \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e, updates to this field may recreate a new resource.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The volume ID of the root volume of the server, allows you to create server with an existing volume. If empty, will be computed to a created volume ID.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of root volume, can be \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbsVolume`\" pulumi-lang-dotnet=\"`SbsVolume`\" pulumi-lang-go=\"`sbsVolume`\" pulumi-lang-python=\"`sbs_volume`\" pulumi-lang-yaml=\"`sbsVolume`\" pulumi-lang-java=\"`sbsVolume`\"\u003e`sbsVolume`\u003c/span\u003e, default value depends on server type\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "sbsIops",
                        "sizeInGb",
                        "volumeId",
                        "volumeType"
                    ]
                }
            }
        },
        "scaleway:instance/SnapshotImport:SnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket name containing [qcow2](https://en.wikipedia.org/wiki/Qcow) to import\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "Key of the object to import\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ]
        },
        "scaleway:instance/getPrivateNicPrivateIp:getPrivateNicPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getSecurityGroupInboundRule:getSecurityGroupInboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule apply to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "ip",
                "ipRange",
                "port",
                "portRange",
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getSecurityGroupOutboundRule:getSecurityGroupOutboundRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to take when rule match. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip this rule apply to.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The ip range (e.g `192.168.1.0/24`) this rule apply to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port this rule apply to. If no port is specified, rule will apply to all port.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The port range (e.g `22-23`) this rule applies to.\nIf no \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e nor \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e are specified, rule will apply to all port.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`portRange`\" pulumi-lang-dotnet=\"`PortRange`\" pulumi-lang-go=\"`portRange`\" pulumi-lang-python=\"`port_range`\" pulumi-lang-yaml=\"`portRange`\" pulumi-lang-java=\"`portRange`\"\u003e`portRange`\u003c/span\u003e should be specified.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol this rule apply to. Possible values are: `TCP`, `UDP`, `ICMP` or `ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "ip",
                "ipRange",
                "port",
                "portRange",
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerFilesystem:getServerFilesystem": {
            "properties": {
                "filesystemId": {
                    "type": "string",
                    "description": "The filesystem ID attached to the server\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the filesystem\n"
                }
            },
            "type": "object",
            "required": [
                "filesystemId",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerPrivateIp:getServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerPrivateNetwork:getServerPrivateNetwork": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "MAC address of the NIC\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "pnicId": {
                    "type": "string",
                    "description": "The ID of the NIC\n"
                },
                "status": {
                    "type": "string",
                    "description": "The private NIC state\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server exists.\n"
                }
            },
            "type": "object",
            "required": [
                "macAddress",
                "pnId",
                "pnicId",
                "status",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerPublicIp:getServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic\n"
                },
                "family": {
                    "type": "string",
                    "description": "IP address family (inet or inet6)\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "Gateway's IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "CIDR netmask\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "Provisioning mode of the IP address\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "dynamic",
                "family",
                "gateway",
                "id",
                "netmask",
                "provisioningMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerRootVolume:getServerRootVolume": {
            "properties": {
                "boot": {
                    "type": "boolean",
                    "description": "Set the volume where the boot the server\n"
                },
                "deleteOnTermination": {
                    "type": "boolean",
                    "description": "Forces deletion of the root volume on instance termination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name. Only one 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=\"`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 should be specified.\n"
                },
                "sbsIops": {
                    "type": "integer",
                    "description": "SBS Volume IOPS, only with\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volumeType \u003c/span\u003eas sbs_volume\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "Size of the root volume in gigabytes.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The volume ID of the root volume of the server.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of the root volume\n"
                }
            },
            "type": "object",
            "required": [
                "boot",
                "deleteOnTermination",
                "name",
                "sbsIops",
                "sizeInGb",
                "volumeId",
                "volumeType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerTypeCapability:getServerTypeCapability": {
            "properties": {
                "bootTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The boot types allowed for the server type.\n"
                },
                "maxFileSystems": {
                    "type": "integer",
                    "description": "The maximum number of file systems that can be attached on the server type.\n"
                }
            },
            "type": "object",
            "required": [
                "bootTypes",
                "maxFileSystems"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerTypeNetwork:getServerTypeNetwork": {
            "properties": {
                "blockBandwidth": {
                    "type": "integer",
                    "description": "The block bandwidth of the server type (in bytes/second).\n"
                },
                "internalBandwidth": {
                    "type": "integer",
                    "description": "The internal bandwidth of the server type (in bytes/second).\n"
                },
                "publicBandwidth": {
                    "type": "integer",
                    "description": "The public bandwidth of the server type (in bytes/second).\n"
                }
            },
            "type": "object",
            "required": [
                "blockBandwidth",
                "internalBandwidth",
                "publicBandwidth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServerTypeVolume:getServerTypeVolume": {
            "properties": {
                "blockStorage": {
                    "type": "boolean",
                    "description": "Whether block storage is allowed on the server type.\n"
                },
                "maxSizePerLocalVolume": {
                    "type": "integer",
                    "description": "The maximum size in bytes per local volume allowed on the server type.\n"
                },
                "maxSizeTotal": {
                    "type": "integer",
                    "description": "The maximum total size in bytes of volumes allowed on the server type.\n"
                },
                "minSizePerLocalVolume": {
                    "type": "integer",
                    "description": "The minimum size in bytes per local volume allowed on the server type.\n"
                },
                "minSizeTotal": {
                    "type": "integer",
                    "description": "The minimum total size in bytes of volumes allowed on the server type.\n"
                },
                "scratchStorageMaxSize": {
                    "type": "integer",
                    "description": "The maximum size in bytes of the scratch volume allowed on the server type.\n"
                }
            },
            "type": "object",
            "required": [
                "blockStorage",
                "maxSizePerLocalVolume",
                "maxSizeTotal",
                "minSizePerLocalVolume",
                "minSizeTotal",
                "scratchStorageMaxSize"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServersServer:getServersServer": {
            "properties": {
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "UUID of the bootscript\n",
                    "deprecationMessage": "bootscript are not supported"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The server name used as filter. Servers with a name like it are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](https://developers.scaleway.com/en/products/instance/api/#placement-groups-d8f653) the server is attached to.\n"
                },
                "placementGroupPolicyRespected": {
                    "type": "boolean",
                    "description": "Whether the placement group policy respected or not\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/getServersServerPrivateIp:getServersServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the server is associated with.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/getServersServerPublicIp:getServersServerPublicIp"
                    },
                    "description": "The list of public IPs of the server\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://developers.scaleway.com/en/products/instance/api/#security-groups-8d7f89) the server is attached to.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. Servers with these exact tags are listed.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which servers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "bootType",
                "bootscriptId",
                "enableDynamicIp",
                "id",
                "image",
                "name",
                "organizationId",
                "placementGroupId",
                "placementGroupPolicyRespected",
                "privateIps",
                "projectId",
                "publicIps",
                "securityGroupId",
                "state",
                "tags",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServersServerPrivateIp:getServersServerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getServersServerPublicIp:getServersServerPublicIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The address of the IP\n"
                },
                "dynamic": {
                    "type": "boolean",
                    "description": "Whether the IP is dynamic.\n"
                },
                "family": {
                    "type": "string",
                    "description": "IP address family (inet or inet6).\n"
                },
                "gateway": {
                    "type": "string",
                    "description": "Gateway's IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP\n"
                },
                "netmask": {
                    "type": "string",
                    "description": "CIDR netmask.\n"
                },
                "provisioningMode": {
                    "type": "string",
                    "description": "Provisioning mode of the IP address.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "dynamic",
                "family",
                "gateway",
                "id",
                "netmask",
                "provisioningMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:instance/getSnapshotImport:getSnapshotImport": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Bucket containing qcow\n"
                },
                "key": {
                    "type": "string",
                    "description": "Key of the qcow file in the specified bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:interlink/LinkPeerBgpConfig:LinkPeerBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "AS Number of the BGP peer\n"
                },
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address of the BGP peer\n"
                },
                "ipv6": {
                    "type": "string",
                    "description": "IPv6 address of the BGP peer\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asn",
                        "ipv4",
                        "ipv6"
                    ]
                }
            }
        },
        "scaleway:interlink/LinkScwBgpConfig:LinkScwBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "AS Number of the BGP peer\n"
                },
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address of the BGP peer\n"
                },
                "ipv6": {
                    "type": "string",
                    "description": "IPv6 address of the BGP peer\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asn",
                        "ipv4",
                        "ipv6"
                    ]
                }
            }
        },
        "scaleway:interlink/getDedicatedConnectionVlanRange:getDedicatedConnectionVlanRange": {
            "properties": {
                "end": {
                    "type": "integer",
                    "description": "End of the VLAN range\n"
                },
                "start": {
                    "type": "integer",
                    "description": "Start of the VLAN range\n"
                }
            },
            "type": "object",
            "required": [
                "end",
                "start"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:interlink/getLinkPeerBgpConfig:getLinkPeerBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "AS Number of the BGP peer\n"
                },
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address of the BGP peer\n"
                },
                "ipv6": {
                    "type": "string",
                    "description": "IPv6 address of the BGP peer\n"
                }
            },
            "type": "object",
            "required": [
                "asn",
                "ipv4",
                "ipv6"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:interlink/getLinkScwBgpConfig:getLinkScwBgpConfig": {
            "properties": {
                "asn": {
                    "type": "integer",
                    "description": "AS Number of the BGP peer\n"
                },
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address of the BGP peer\n"
                },
                "ipv6": {
                    "type": "string",
                    "description": "IPv6 address of the BGP peer\n"
                }
            },
            "type": "object",
            "required": [
                "asn",
                "ipv4",
                "ipv6"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:interlink/getPartnersPartner:getPartnersPartner": {
            "properties": {
                "contactEmail": {
                    "type": "string",
                    "description": "Contact email address.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Creation date.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the partner.\n"
                },
                "logoUrl": {
                    "type": "string",
                    "description": "URL of the partner's logo.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the partner.\n"
                },
                "portalUrl": {
                    "type": "string",
                    "description": "URL of the partner's portal.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Last update date.\n"
                }
            },
            "type": "object",
            "required": [
                "contactEmail",
                "createdAt",
                "id",
                "logoUrl",
                "name",
                "portalUrl",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:interlink/getPopsPop:getPopsPop": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "Physical address of the PoP.\n"
                },
                "availableLinkBandwidthsMbps": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "List of available bandwidth options in Mbps.\n"
                },
                "city": {
                    "type": "string",
                    "description": "City where the PoP is located.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Human-readable display name.\n"
                },
                "hostingProviderName": {
                    "type": "string",
                    "description": "Hosting provider name to filter for.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the PoP.\n"
                },
                "logoUrl": {
                    "type": "string",
                    "description": "URL of the PoP's logo.\n"
                },
                "name": {
                    "type": "string",
                    "description": "PoP name to filter for.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region to list PoPs from.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "availableLinkBandwidthsMbps",
                "city",
                "displayName",
                "hostingProviderName",
                "id",
                "logoUrl",
                "name",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iot/DeviceCertificate:DeviceCertificate": {
            "properties": {
                "crt": {
                    "type": "string",
                    "description": "X509 PEM encoded certificate of the device\n",
                    "secret": true
                },
                "key": {
                    "type": "string",
                    "description": "The private key of the device, in case it is generated by Scaleway.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "crt",
                        "key"
                    ]
                }
            }
        },
        "scaleway:iot/DeviceMessageFilters:DeviceMessageFilters": {
            "properties": {
                "publish": {
                    "$ref": "#/types/scaleway:iot/DeviceMessageFiltersPublish:DeviceMessageFiltersPublish",
                    "description": "Rules used to restrict topics the device can publish to.\n"
                },
                "subscribe": {
                    "$ref": "#/types/scaleway:iot/DeviceMessageFiltersSubscribe:DeviceMessageFiltersSubscribe",
                    "description": "Rules used to restrict topics the device can subscribe to.\n"
                }
            },
            "type": "object"
        },
        "scaleway:iot/DeviceMessageFiltersPublish:DeviceMessageFiltersPublish": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Filtering policy (eg \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`reject`\" pulumi-lang-dotnet=\"`Reject`\" pulumi-lang-go=\"`reject`\" pulumi-lang-python=\"`reject`\" pulumi-lang-yaml=\"`reject`\" pulumi-lang-java=\"`reject`\"\u003e`reject`\u003c/span\u003e)\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics to match (eg `foo/bar/+/baz/#`)\n"
                }
            },
            "type": "object"
        },
        "scaleway:iot/DeviceMessageFiltersSubscribe:DeviceMessageFiltersSubscribe": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Same as publish rules.\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Same as publish rules.\n\n- `certificate.crt` - (Optional) The certificate of the device, either generated by Scaleway or provided.\n\n\u003e **Important:** Updates to `certificate.crt` will disconnect connected devices and the previous certificate will be deleted and won't be recoverable.\n"
                }
            },
            "type": "object"
        },
        "scaleway:iot/RouteDatabase:RouteDatabase": {
            "properties": {
                "dbname": {
                    "type": "string",
                    "description": "The database name (e.g. \u003cspan pulumi-lang-nodejs=\"`measurements`\" pulumi-lang-dotnet=\"`Measurements`\" pulumi-lang-go=\"`measurements`\" pulumi-lang-python=\"`measurements`\" pulumi-lang-yaml=\"`measurements`\" pulumi-lang-java=\"`measurements`\"\u003e`measurements`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                },
                "host": {
                    "type": "string",
                    "description": "The database hostname. Can be an IP or a FQDN.\n",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "The database password.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "The database port (e.g. \u003cspan pulumi-lang-nodejs=\"`5432`\" pulumi-lang-dotnet=\"`5432`\" pulumi-lang-go=\"`5432`\" pulumi-lang-python=\"`5432`\" pulumi-lang-yaml=\"`5432`\" pulumi-lang-java=\"`5432`\"\u003e`5432`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "query": {
                    "type": "string",
                    "description": "The SQL query that will be executed when receiving a message ($TOPIC and $PAYLOAD variables are available, see documentation, e.g. `INSERT INTO mytable(date, topic, value) VALUES (NOW(), $TOPIC, $PAYLOAD)`).\n",
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "The database username.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dbname",
                "host",
                "password",
                "port",
                "query",
                "username"
            ]
        },
        "scaleway:iot/RouteRest:RouteRest": {
            "properties": {
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "a map of the extra headers to send with the HTTP call (e.g. `X-Header = Value`).\n",
                    "willReplaceOnChanges": true
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the Rest endpoint (e.g. `https://internal.mycompany.com/ingest/mqttdata`).\n",
                    "willReplaceOnChanges": true
                },
                "verb": {
                    "type": "string",
                    "description": "The HTTP Verb used to call Rest URI (e.g. \u003cspan pulumi-lang-nodejs=\"`post`\" pulumi-lang-dotnet=\"`Post`\" pulumi-lang-go=\"`post`\" pulumi-lang-python=\"`post`\" pulumi-lang-yaml=\"`post`\" pulumi-lang-java=\"`post`\"\u003e`post`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "headers",
                "uri",
                "verb"
            ]
        },
        "scaleway:iot/RouteS3:RouteS3": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the S3 route's destination bucket (e.g. `my-object-storage`).\n",
                    "willReplaceOnChanges": true
                },
                "bucketRegion": {
                    "type": "string",
                    "description": "The region of the S3 route's destination bucket (e.g. `fr-par`).\n",
                    "willReplaceOnChanges": true
                },
                "objectPrefix": {
                    "type": "string",
                    "description": "The string to prefix object names with (e.g. `mykeyprefix-`).\n",
                    "willReplaceOnChanges": true
                },
                "strategy": {
                    "type": "string",
                    "description": "How the S3 route's objects will be created (e.g. \u003cspan pulumi-lang-nodejs=\"`perTopic`\" pulumi-lang-dotnet=\"`PerTopic`\" pulumi-lang-go=\"`perTopic`\" pulumi-lang-python=\"`per_topic`\" pulumi-lang-yaml=\"`perTopic`\" pulumi-lang-java=\"`perTopic`\"\u003e`perTopic`\u003c/span\u003e). See [documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for behaviour details.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucketName",
                "bucketRegion",
                "strategy"
            ]
        },
        "scaleway:iot/getDeviceCertificate:getDeviceCertificate": {
            "properties": {
                "crt": {
                    "type": "string",
                    "description": "X509 PEM encoded certificate of the device\n"
                },
                "key": {
                    "type": "string",
                    "description": "X509 PEM encoded key of the device\n"
                }
            },
            "type": "object",
            "required": [
                "crt",
                "key"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iot/getDeviceMessageFilter:getDeviceMessageFilter": {
            "properties": {
                "publishes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:iot/getDeviceMessageFilterPublish:getDeviceMessageFilterPublish"
                    },
                    "description": "Rule to restrict topics the device can publish to\n"
                },
                "subscribes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:iot/getDeviceMessageFilterSubscribe:getDeviceMessageFilterSubscribe"
                    },
                    "description": "Rule to restrict topics the device can subscribe to\n"
                }
            },
            "type": "object",
            "required": [
                "publishes",
                "subscribes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iot/getDeviceMessageFilterPublish:getDeviceMessageFilterPublish": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Publish message filter policy\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics in the set\n"
                }
            },
            "type": "object",
            "required": [
                "policy",
                "topics"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:iot/getDeviceMessageFilterSubscribe:getDeviceMessageFilterSubscribe": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "Subscribe message filter policy\n"
                },
                "topics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of topics in the set\n"
                }
            },
            "type": "object",
            "required": [
                "policy",
                "topics"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:ipam/IpCustomResource:IpCustomResource": {
            "properties": {
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the custom resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "When the resource is in a Private Network, a DNS record is available to resolve the resource name.\n"
                }
            },
            "type": "object",
            "required": [
                "macAddress"
            ]
        },
        "scaleway:ipam/IpResource:IpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the resource that the IP is attached to.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the resource the IP is attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the resource the IP is attached to.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of resource the IP is attached to.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "macAddress",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "scaleway:ipam/IpReverse:IpReverse": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "Request a specific IP in the specified source pool.\n\n\u003e **Important:** when requesting specific IP addresses, it is best ensure these are created before any other resource in the Private Network. This can be achieved by using \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 relations, or moving the declarations to another Terraform module. Otherwise, other resources may take the requested address first, blocking the whole Terraform setup. Static IPs should be avoided unless necessary, as we cannot guarantee full automation. We recommend to use DNS, or to not request a specific IP.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The reverse domain name.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "hostname"
                    ]
                }
            }
        },
        "scaleway:ipam/IpSource:IpSource": {
            "properties": {
                "privateNetworkId": {
                    "type": "string",
                    "description": "The Private Network of the IP (if the IP is a private IP).\n"
                },
                "subnetId": {
                    "type": "string",
                    "description": "The Private Network subnet of the IP (if the IP is a private IP).\n"
                },
                "zonal": {
                    "type": "string",
                    "description": "The zone of the IP (if the IP is public and zoned, rather than private and/or regional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "privateNetworkId",
                        "subnetId",
                        "zonal"
                    ]
                }
            }
        },
        "scaleway:ipam/getIpResource:getIpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the resource that the IP is attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the resource the IP is attached to.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the resource the IP is attached to. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:ipam/getIpsIp:getIpsIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The Scaleway internal IP address of the resource.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IP.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the resource.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project to filter for.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region to filter for.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:ipam/getIpsIpResource:getIpsIpResource"
                    },
                    "description": "Filter for a resource attached to the IP, using resource ID, type or name.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IP tags to filter for.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the IP.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "projectId",
                "region",
                "resources",
                "tags",
                "updatedAt",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:ipam/getIpsIpResource:getIpsIpResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the attached resource.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The linked MAC address to filter for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the attached resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the attached resource. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "macAddress",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:ipam/getIpsResource:getIpsResource": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the attached resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the attached resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the attached resource. [Documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/ipam/v1#pkg-constants) with type list.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:job/DefinitionCron:DefinitionCron": {
            "properties": {
                "schedule": {
                    "type": "string",
                    "description": "Cron format string.\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "The timezone, must be a canonical TZ identifier as found in this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).\n"
                }
            },
            "type": "object",
            "required": [
                "schedule",
                "timezone"
            ]
        },
        "scaleway:job/DefinitionSecretReference:DefinitionSecretReference": {
            "properties": {
                "environment": {
                    "type": "string",
                    "description": "An environment variable containing the secret value. Must be specified if \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e is not specified.\n"
                },
                "file": {
                    "type": "string",
                    "description": "The absolute file path where the secret will be mounted. Must be specified if \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e is not specified.\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The secret unique identifier, it could be formatted as region/UUID or UUID. In case the region is passed, it must be the same as the job definition. You could reference the same secret multiple times in the same job definition.\n"
                },
                "secretReferenceId": {
                    "type": "string",
                    "description": "The secret reference UUID that is automatically generated by the provider.\n"
                },
                "secretVersion": {
                    "type": "string",
                    "description": "The secret version.\n"
                }
            },
            "type": "object",
            "required": [
                "secretId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secretId",
                        "secretReferenceId"
                    ]
                }
            }
        },
        "scaleway:kafka/ClusterPrivateNetwork:ClusterPrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for the private endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the private endpoint.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID (same as input).\n",
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port number.\n"
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecords",
                        "id",
                        "pnId",
                        "port"
                    ]
                }
            }
        },
        "scaleway:kafka/ClusterPublicNetwork:ClusterPublicNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for the private endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the private endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port number.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecords",
                        "id",
                        "port"
                    ]
                }
            }
        },
        "scaleway:kafka/getClusterPrivateNetwork:getClusterPrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "DNS records for the private endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The endpoint ID\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port number\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecords",
                "id",
                "pnId",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kafka/getClusterPublicNetwork:getClusterPublicNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "DNS records for the public endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the public endpoint\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port number\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecords",
                "id",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:keymanager/KeyRotationPolicy:KeyRotationPolicy": {
            "properties": {
                "nextRotationAt": {
                    "type": "string",
                    "description": "The date and time of the next scheduled rotation.\n"
                },
                "rotationPeriod": {
                    "type": "string",
                    "description": "– The period between key rotations (e.g., `\"720h\"` for 30 days).\n"
                }
            },
            "type": "object",
            "required": [
                "rotationPeriod"
            ]
        },
        "scaleway:keymanager/getKeyRotationPolicy:getKeyRotationPolicy": {
            "properties": {
                "nextRotationAt": {
                    "type": "string",
                    "description": "Timestamp indicating the next scheduled rotation.\n"
                },
                "rotationPeriod": {
                    "type": "string",
                    "description": "Time interval between two key rotations. The minimum duration is 24 hours and the maximum duration is 1 year (876000 hours).\n"
                }
            },
            "type": "object",
            "required": [
                "nextRotationAt",
                "rotationPeriod"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/AclAclRule:AclAclRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A text describing this rule.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the ACL resource. It is the same as the ID of the cluster.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)\n\n\u003e **Important:** If the \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 field is set, \u003cspan pulumi-lang-nodejs=\"`scalewayRanges`\" pulumi-lang-dotnet=\"`ScalewayRanges`\" pulumi-lang-go=\"`scalewayRanges`\" pulumi-lang-python=\"`scaleway_ranges`\" pulumi-lang-yaml=\"`scalewayRanges`\" pulumi-lang-java=\"`scalewayRanges`\"\u003e`scalewayRanges`\u003c/span\u003e cannot be set to true in the same rule.\n"
                },
                "scalewayRanges": {
                    "type": "boolean",
                    "description": "Allow access to cluster from all Scaleway ranges as defined in [Scaleway Network Information - IP ranges used by Scaleway](https://www.scaleway.com/en/docs/console/account/reference-content/scaleway-network-information/#ip-ranges-used-by-scaleway).\nOnly one rule with this field set to true can be added.\n\n\u003e **Important:** If the \u003cspan pulumi-lang-nodejs=\"`scalewayRanges`\" pulumi-lang-dotnet=\"`ScalewayRanges`\" pulumi-lang-go=\"`scalewayRanges`\" pulumi-lang-python=\"`scaleway_ranges`\" pulumi-lang-yaml=\"`scalewayRanges`\" pulumi-lang-java=\"`scalewayRanges`\"\u003e`scalewayRanges`\u003c/span\u003e field is set to true, the \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 field cannot be set on the same rule.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id"
                    ]
                }
            }
        },
        "scaleway:kubernetes/ClusterAutoUpgrade:ClusterAutoUpgrade": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "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 to enable Kubernetes patch version auto upgrades.\n\u003e **Important:** When enabling auto upgrades, the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e field take a minor version like x.y (ie 1.18).\n"
                },
                "maintenanceWindowDay": {
                    "type": "string",
                    "description": "The day of the auto upgrade maintenance window (\u003cspan pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\"\u003e`monday`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\"\u003e`sunday`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e).\n"
                },
                "maintenanceWindowStartHour": {
                    "type": "integer",
                    "description": "The start hour (UTC) of the 2-hour auto upgrade maintenance window (0 to 23).\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "maintenanceWindowDay",
                "maintenanceWindowStartHour"
            ]
        },
        "scaleway:kubernetes/ClusterAutoscalerConfig:ClusterAutoscalerConfig": {
            "properties": {
                "balanceSimilarNodeGroups": {
                    "type": "boolean",
                    "description": "Detect similar node groups and balance the number of nodes between them.\n"
                },
                "disableScaleDown": {
                    "type": "boolean",
                    "description": "Disables the scale down feature of the autoscaler.\n"
                },
                "estimator": {
                    "type": "string",
                    "description": "Type of resource estimator to be used in scale up.\n"
                },
                "expander": {
                    "type": "string",
                    "description": "Type of node group expander to be used in scale up.\n"
                },
                "expendablePodsPriorityCutoff": {
                    "type": "integer",
                    "description": "Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they don't cause scale up. Pods with null priority (PodPriority disabled) are non expendable.\n"
                },
                "ignoreDaemonsetsUtilization": {
                    "type": "boolean",
                    "description": "Ignore DaemonSet pods when calculating resource utilization for scaling down.\n"
                },
                "maxGracefulTerminationSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node\n"
                },
                "scaleDownDelayAfterAdd": {
                    "type": "string",
                    "description": "How long after scale up that scale down evaluation resumes.\n"
                },
                "scaleDownUnneededTime": {
                    "type": "string",
                    "description": "How long a node should be unneeded before it is eligible for scale down.\n"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number",
                    "description": "Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down\n"
                }
            },
            "type": "object"
        },
        "scaleway:kubernetes/ClusterKubeconfig:ClusterKubeconfig": {
            "properties": {
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The CA certificate of the Kubernetes API server.\n"
                },
                "configFile": {
                    "type": "string",
                    "description": "The raw kubeconfig file.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the Kubernetes API server.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The token to connect to the Kubernetes API server.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clusterCaCertificate",
                        "configFile",
                        "host",
                        "token"
                    ]
                }
            }
        },
        "scaleway:kubernetes/ClusterOpenIdConnectConfig:ClusterOpenIdConnectConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "A client id that all tokens must be issued for\n"
                },
                "groupsClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "JWT claim to use as the user's group\n"
                },
                "groupsPrefix": {
                    "type": "string",
                    "description": "Prefix prepended to group claims\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "URL of the provider which allows the API server to discover public signing keys\n"
                },
                "requiredClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Multiple key=value pairs that describes a required claim in the ID Token\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "JWT claim to use as the user name\n"
                },
                "usernamePrefix": {
                    "type": "string",
                    "description": "Prefix prepended to username\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "issuerUrl"
            ]
        },
        "scaleway:kubernetes/PoolNode:PoolNode": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:kubernetes/PoolNodePrivateIp:PoolNodePrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the node.\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "The public IPv4. (Deprecated, Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source)\n",
                    "deprecationMessage": "Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source"
                },
                "publicIpV6": {
                    "type": "string",
                    "description": "The public IPv6. (Deprecated, Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source)\n",
                    "deprecationMessage": "Please use the official Kubernetes provider and the\u003cspan pulumi-lang-nodejs=\" kubernetesNodes \" pulumi-lang-dotnet=\" KubernetesNodes \" pulumi-lang-go=\" kubernetesNodes \" pulumi-lang-python=\" kubernetes_nodes \" pulumi-lang-yaml=\" kubernetesNodes \" pulumi-lang-java=\" kubernetesNodes \"\u003e kubernetesNodes \u003c/span\u003edata source"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the node.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "name",
                        "privateIps",
                        "publicIp",
                        "publicIpV6",
                        "status"
                    ]
                }
            }
        },
        "scaleway:kubernetes/PoolNodePrivateIp:PoolNodePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:kubernetes/PoolUpgradePolicy:PoolUpgradePolicy": {
            "properties": {
                "maxSurge": {
                    "type": "integer",
                    "description": "The maximum number of nodes to be created during the upgrade\n"
                },
                "maxUnavailable": {
                    "type": "integer",
                    "description": "The maximum number of nodes that can be not ready at the same time\n"
                }
            },
            "type": "object"
        },
        "scaleway:kubernetes/getClusterAutoUpgrade:getClusterAutoUpgrade": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "True if Kubernetes patch version auto upgrades is enabled.\n"
                },
                "maintenanceWindowDay": {
                    "type": "string",
                    "description": "The day of the auto upgrade maintenance window (\u003cspan pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\"\u003e`monday`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\"\u003e`sunday`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e).\n"
                },
                "maintenanceWindowStartHour": {
                    "type": "integer",
                    "description": "The start hour (UTC) of the 2-hour auto upgrade maintenance window (0 to 23).\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "maintenanceWindowDay",
                "maintenanceWindowStartHour"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getClusterAutoscalerConfig:getClusterAutoscalerConfig": {
            "properties": {
                "balanceSimilarNodeGroups": {
                    "type": "boolean",
                    "description": "True if detecting similar node groups and balance the number of nodes between them is enabled.\n"
                },
                "disableScaleDown": {
                    "type": "boolean",
                    "description": "True if the scale down feature of the autoscaler is disabled.\n"
                },
                "estimator": {
                    "type": "string",
                    "description": "The type of resource estimator used in scale up.\n"
                },
                "expander": {
                    "type": "string",
                    "description": "The type of node group expander be used in scale up.\n"
                },
                "expendablePodsPriorityCutoff": {
                    "type": "integer",
                    "description": "Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they don't cause scale up. Pods with null priority (PodPriority disabled) are non expendable.\n"
                },
                "ignoreDaemonsetsUtilization": {
                    "type": "boolean",
                    "description": "True if ignoring DaemonSet pods when calculating resource utilization for scaling down is enabled.\n"
                },
                "maxGracefulTerminationSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node\n"
                },
                "scaleDownDelayAfterAdd": {
                    "type": "string",
                    "description": "The duration after scale up that scale down evaluation resumes.\n"
                },
                "scaleDownUnneededTime": {
                    "type": "string",
                    "description": "The duration a node should be unneeded before it is eligible for scale down.\n"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number",
                    "description": "Node utilization level, defined as sum of requested resources divided by capacity, below which a node can be considered for scale down\n"
                }
            },
            "type": "object",
            "required": [
                "balanceSimilarNodeGroups",
                "disableScaleDown",
                "estimator",
                "expander",
                "expendablePodsPriorityCutoff",
                "ignoreDaemonsetsUtilization",
                "maxGracefulTerminationSec",
                "scaleDownDelayAfterAdd",
                "scaleDownUnneededTime",
                "scaleDownUtilizationThreshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getClusterKubeconfig:getClusterKubeconfig": {
            "properties": {
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The CA certificate of the Kubernetes API server.\n"
                },
                "configFile": {
                    "type": "string",
                    "description": "The raw kubeconfig file.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the Kubernetes API server.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The token to connect to the Kubernetes API server.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterCaCertificate",
                "configFile",
                "host",
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getClusterOpenIdConnectConfig:getClusterOpenIdConnectConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "A client id that all tokens must be issued for\n"
                },
                "groupsClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "JWT claim to use as the user's group\n"
                },
                "groupsPrefix": {
                    "type": "string",
                    "description": "Prefix prepended to group claims\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "URL of the provider which allows the API server to discover public signing keys\n"
                },
                "requiredClaims": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Multiple key=value pairs that describes a required claim in the ID Token\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "JWT claim to use as the user name\n"
                },
                "usernamePrefix": {
                    "type": "string",
                    "description": "Prefix prepended to username\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "groupsClaims",
                "groupsPrefix",
                "issuerUrl",
                "requiredClaims",
                "usernameClaim",
                "usernamePrefix"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getPoolNode:getPoolNode": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the pool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The pool name. Only one 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=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`poolId`\u003c/span\u003e should be specified. \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 should be specified with \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:kubernetes/getPoolNodePrivateIp:getPoolNodePrivateIp"
                    },
                    "description": "List of private IPv4 and IPv6 addresses associated with the node\n"
                },
                "publicIp": {
                    "type": "string",
                    "description": "The public IPv4.\n"
                },
                "publicIpV6": {
                    "type": "string",
                    "description": "The public IPv6.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the node.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name",
                "privateIps",
                "publicIp",
                "publicIpV6",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getPoolNodePrivateIp:getPoolNodePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the pool.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:kubernetes/getPoolUpgradePolicy:getPoolUpgradePolicy": {
            "properties": {
                "maxSurge": {
                    "type": "integer",
                    "description": "The maximum number of nodes to be created during the upgrade\n"
                },
                "maxUnavailable": {
                    "type": "integer",
                    "description": "The maximum number of nodes that can be not ready at the same time\n"
                }
            },
            "type": "object",
            "required": [
                "maxSurge",
                "maxUnavailable"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/AclAction:AclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/AclActionRedirect:AclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type. Possible values are: \u003cspan pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\"\u003e`allow`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:loadbalancers/AclActionRedirect:AclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use. Valid values are \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`303`\" pulumi-lang-dotnet=\"`303`\" pulumi-lang-go=\"`303`\" pulumi-lang-python=\"`303`\" pulumi-lang-yaml=\"`303`\" pulumi-lang-java=\"`303`\"\u003e`303`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e.\n"
                },
                "target": {
                    "type": "string",
                    "description": "An URL can be used in case of a location redirect (e.g. `https://scaleway.com` will redirect to this same URL). A scheme name (e.g. \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ftp`\" pulumi-lang-dotnet=\"`Ftp`\" pulumi-lang-go=\"`ftp`\" pulumi-lang-python=\"`ftp`\" pulumi-lang-yaml=\"`ftp`\" pulumi-lang-java=\"`ftp`\"\u003e`ftp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e) will replace the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type. Possible values are: \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=\"`scheme`\" pulumi-lang-dotnet=\"`Scheme`\" pulumi-lang-go=\"`scheme`\" pulumi-lang-python=\"`scheme`\" pulumi-lang-yaml=\"`scheme`\" pulumi-lang-java=\"`scheme`\"\u003e`scheme`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "scaleway:loadbalancers/AclMatch:AclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match. This filter is supported only if your backend protocol has an HTTP forward protocol.\nIt extracts the request's URL path, which starts at the first slash and ends before the question mark (without the host part).\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`aclHttpFilterNone`\" pulumi-lang-dotnet=\"`AclHttpFilterNone`\" pulumi-lang-go=\"`aclHttpFilterNone`\" pulumi-lang-python=\"`acl_http_filter_none`\" pulumi-lang-yaml=\"`aclHttpFilterNone`\" pulumi-lang-java=\"`aclHttpFilterNone`\"\u003e`aclHttpFilterNone`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathBegin`\" pulumi-lang-dotnet=\"`PathBegin`\" pulumi-lang-go=\"`pathBegin`\" pulumi-lang-python=\"`path_begin`\" pulumi-lang-yaml=\"`pathBegin`\" pulumi-lang-java=\"`pathBegin`\"\u003e`pathBegin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathEnd`\" pulumi-lang-dotnet=\"`PathEnd`\" pulumi-lang-go=\"`pathEnd`\" pulumi-lang-python=\"`path_end`\" pulumi-lang-yaml=\"`pathEnd`\" pulumi-lang-java=\"`pathEnd`\"\u003e`pathEnd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "If you have \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e at \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e, you can use this field to filter on the HTTP header's value.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter.\nKeep in mind that in the case of \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e the HTTP header field name is case insensitive.\n"
                },
                "invert": {
                    "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, the condition will be of type \"unless\".\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                }
            },
            "type": "object"
        },
        "scaleway:loadbalancers/BackendHealthCheckHttp:BackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTP endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "scaleway:loadbalancers/BackendHealthCheckHttps:BackendHealthCheckHttps": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTPS endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "scaleway:loadbalancers/BackendHealthCheckTcp:BackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:loadbalancers/CertificateCustomCertificate:CertificateCustomCertificate": {
            "properties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted certificate chain\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "certificateChain"
            ]
        },
        "scaleway:loadbalancers/CertificateLetsencrypt:CertificateLetsencrypt": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "Main domain of the certificate\n",
                    "willReplaceOnChanges": true
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The alternative domain names of the certificate\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "commonName"
            ]
        },
        "scaleway:loadbalancers/FrontendAcl:FrontendAcl": {
            "properties": {
                "action": {
                    "$ref": "#/types/scaleway:loadbalancers/FrontendAclAction:FrontendAclAction",
                    "description": "Action to undertake when an ACL filter matches.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the frontend was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the ACL\n"
                },
                "match": {
                    "$ref": "#/types/scaleway:loadbalancers/FrontendAclMatch:FrontendAclMatch",
                    "description": "The ACL match rule. At least \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`httpFilterValue`\" pulumi-lang-dotnet=\"`HttpFilterValue`\" pulumi-lang-go=\"`httpFilterValue`\" pulumi-lang-python=\"`http_filter_value`\" pulumi-lang-yaml=\"`httpFilterValue`\" pulumi-lang-java=\"`httpFilterValue`\"\u003e`httpFilterValue`\u003c/span\u003e are required.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the frontend resource was updated.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "createdAt",
                        "match",
                        "name",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:loadbalancers/FrontendAclAction:FrontendAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/FrontendAclActionRedirect:FrontendAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type. Possible values are: \u003cspan pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\"\u003e`allow`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "scaleway:loadbalancers/FrontendAclActionRedirect:FrontendAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use. Valid values are \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`303`\" pulumi-lang-dotnet=\"`303`\" pulumi-lang-go=\"`303`\" pulumi-lang-python=\"`303`\" pulumi-lang-yaml=\"`303`\" pulumi-lang-java=\"`303`\"\u003e`303`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e.\n"
                },
                "target": {
                    "type": "string",
                    "description": "A URL can be used in case of a location redirect (e.g. `https://scaleway.com` will redirect to this same URL). A scheme name (e.g. \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ftp`\" pulumi-lang-dotnet=\"`Ftp`\" pulumi-lang-go=\"`ftp`\" pulumi-lang-python=\"`ftp`\" pulumi-lang-yaml=\"`ftp`\" pulumi-lang-java=\"`ftp`\"\u003e`ftp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e) will replace the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type. Possible values are: \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=\"`scheme`\" pulumi-lang-dotnet=\"`Scheme`\" pulumi-lang-go=\"`scheme`\" pulumi-lang-python=\"`scheme`\" pulumi-lang-yaml=\"`scheme`\" pulumi-lang-java=\"`scheme`\"\u003e`scheme`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "scaleway:loadbalancers/FrontendAclMatch:FrontendAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match. This filter is supported only if your backend protocol has an HTTP forward protocol.\nIt extracts the request's URL path, which starts at the first slash and ends before the question mark (without the host part).\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`aclHttpFilterNone`\" pulumi-lang-dotnet=\"`AclHttpFilterNone`\" pulumi-lang-go=\"`aclHttpFilterNone`\" pulumi-lang-python=\"`acl_http_filter_none`\" pulumi-lang-yaml=\"`aclHttpFilterNone`\" pulumi-lang-java=\"`aclHttpFilterNone`\"\u003e`aclHttpFilterNone`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathBegin`\" pulumi-lang-dotnet=\"`PathBegin`\" pulumi-lang-go=\"`pathBegin`\" pulumi-lang-python=\"`path_begin`\" pulumi-lang-yaml=\"`pathBegin`\" pulumi-lang-java=\"`pathBegin`\"\u003e`pathBegin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pathEnd`\" pulumi-lang-dotnet=\"`PathEnd`\" pulumi-lang-go=\"`pathEnd`\" pulumi-lang-python=\"`path_end`\" pulumi-lang-yaml=\"`pathEnd`\" pulumi-lang-java=\"`pathEnd`\"\u003e`pathEnd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`regex`\" pulumi-lang-dotnet=\"`Regex`\" pulumi-lang-go=\"`regex`\" pulumi-lang-python=\"`regex`\" pulumi-lang-yaml=\"`regex`\" pulumi-lang-java=\"`regex`\"\u003e`regex`\u003c/span\u003e.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "If you have \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e at \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e, you can use this field to filter on the HTTP header's value.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter.\nKeep in mind that in the case of \u003cspan pulumi-lang-nodejs=\"`httpHeaderMatch`\" pulumi-lang-dotnet=\"`HttpHeaderMatch`\" pulumi-lang-go=\"`httpHeaderMatch`\" pulumi-lang-python=\"`http_header_match`\" pulumi-lang-yaml=\"`httpHeaderMatch`\" pulumi-lang-java=\"`httpHeaderMatch`\"\u003e`httpHeaderMatch`\u003c/span\u003e the HTTP header field name is case insensitive.\n"
                },
                "invert": {
                    "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, the condition will be of type \"unless\".\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched. Only one of \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e should be specified.\n"
                }
            },
            "type": "object"
        },
        "scaleway:loadbalancers/LoadBalancerPrivateIp:LoadBalancerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IP address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:loadbalancers/LoadBalancerPrivateNetwork:LoadBalancerPrivateNetwork": {
            "properties": {
                "dhcpConfig": {
                    "type": "boolean",
                    "description": "Set to true if you want to let DHCP assign IP addresses\n",
                    "deprecationMessage": "dhcp_config field is deprecated, please use \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipamIds`\" pulumi-lang-dotnet=\"`IpamIds`\" pulumi-lang-go=\"`ipamIds`\" pulumi-lang-python=\"`ipam_ids`\" pulumi-lang-yaml=\"`ipamIds`\" pulumi-lang-java=\"`ipamIds`\"\u003e`ipamIds`\u003c/span\u003e instead"
                },
                "ipamIds": {
                    "type": "string",
                    "description": "IPAM ID of a pre-reserved IP address to assign to the Load Balancer on this Private Network.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network to attach to.\n- \u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e will recreate the attachment.\n"
                },
                "staticConfigs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Define an IP address in the subnet of your private network that will be assigned to your load balancer instance\n",
                    "deprecationMessage": "static_config field is deprecated, please use \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipamIds`\" pulumi-lang-dotnet=\"`IpamIds`\" pulumi-lang-go=\"`ipamIds`\" pulumi-lang-python=\"`ipam_ids`\" pulumi-lang-yaml=\"`ipamIds`\" pulumi-lang-java=\"`ipamIds`\"\u003e`ipamIds`\u003c/span\u003e instead"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the private network connection.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dhcpConfig",
                        "ipamIds",
                        "privateNetworkId",
                        "staticConfigs",
                        "status",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:loadbalancers/getAclsAcl:getAclsAcl": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getAclsAclAction:getAclsAclAction"
                    },
                    "description": "The action to be undertaken when an ACL filter matches.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the ACL was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the ACL resource.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The frontend ID this ACL is attached to. ACLs with a matching frontend ID are listed.\n\u003e **Important:** LB frontend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated ACL ID.\n\u003e **Important:** LB ACLs' IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "index": {
                    "type": "integer",
                    "description": "The priority of this ACL in the ordered list.\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getAclsAclMatch:getAclsAclMatch"
                    },
                    "description": "The ACL match rule.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name to filter for. ACLs with a matching name are listed.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the ACL was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "createdAt",
                "description",
                "frontendId",
                "id",
                "index",
                "matches",
                "name",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getAclsAclAction:getAclsAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getAclsAclActionRedirect:getAclsAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type.\n"
                }
            },
            "type": "object",
            "required": [
                "redirects",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getAclsAclActionRedirect:getAclsAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use.\n"
                },
                "target": {
                    "type": "string",
                    "description": "The URL used in case of a location redirect, or the scheme name that replaces the request's original scheme.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getAclsAclMatch:getAclsAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match.\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "A list of possible values for the HTTP filter based on the HTTP header.\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The possible values to match for a given HTTP filter.\n"
                },
                "invert": {
                    "type": "boolean",
                    "description": "The condition will be of type \"unless\" if invert is 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\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs, or CIDR v4/v6 addresses of the session client, to match.\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched.\n"
                }
            },
            "type": "object",
            "required": [
                "httpFilter",
                "httpFilterOption",
                "httpFilterValues",
                "invert",
                "ipSubnets",
                "ipsEdgeServices"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getBackendHealthCheckHttp:getBackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for HC requests\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for HC requests\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The HTTPS endpoint URL to call for HC requests\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "hostHeader",
                "method",
                "sni",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getBackendHealthCheckTcp:getBackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:loadbalancers/getBackendsBackend:getBackendsBackend": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the backend was created (RFC 3339 format).\n"
                },
                "failoverHost": {
                    "type": "string",
                    "description": "Scaleway S3 bucket website to be served if all backend servers are down.\n"
                },
                "forwardPort": {
                    "type": "integer",
                    "description": "User sessions will be forwarded to this backend server port.\n"
                },
                "forwardPortAlgorithm": {
                    "type": "string",
                    "description": "Load balancing algorithm.\n"
                },
                "forwardProtocol": {
                    "type": "string",
                    "description": "Backend protocol.\n"
                },
                "healthCheckDelay": {
                    "type": "string",
                    "description": "Interval between two health check requests.\n"
                },
                "healthCheckHttp": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getBackendsBackendHealthCheckHttp:getBackendsBackendHealthCheckHttp"
                    },
                    "description": "This block enables HTTP health checks.\n"
                },
                "healthCheckHttps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getBackendsBackendHealthCheckHttp:getBackendsBackendHealthCheckHttp"
                    },
                    "description": "This block enables HTTPS health checks.\n"
                },
                "healthCheckMaxRetries": {
                    "type": "integer",
                    "description": "Number of allowed failed health check requests before the backend server is marked as down.\n"
                },
                "healthCheckPort": {
                    "type": "integer",
                    "description": "Port the health check requests will be sent to.\n"
                },
                "healthCheckTcps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getBackendsBackendHealthCheckTcp:getBackendsBackendHealthCheckTcp"
                    },
                    "description": "This block enables TCP health checks.\n"
                },
                "healthCheckTimeout": {
                    "type": "string",
                    "description": "Timeout before a health check request is considered failed.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated backend ID.\n"
                },
                "ignoreSslServerVerify": {
                    "type": "boolean",
                    "description": "Specifies whether the Load Balancer should check the backend server’s certificate before initiating a connection.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The Load Balancer ID this backend is attached to. Backends with a matching ID are listed.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The backend name to filter for. Backends with a matching name are listed.\n"
                },
                "onMarkedDownAction": {
                    "type": "string",
                    "description": "Modify what occurs when a backend server is marked down.\n"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "The type of PROXY protocol.\n"
                },
                "serverIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of backend server IP addresses.\n"
                },
                "sslBridging": {
                    "type": "boolean",
                    "description": "Enables SSL between Load Balancer and backend servers.\n"
                },
                "stickySessions": {
                    "type": "string",
                    "description": "Enables cookie-based session persistence.\n"
                },
                "stickySessionsCookieName": {
                    "type": "string",
                    "description": "Cookie name for sticky sessions.\n"
                },
                "timeoutConnect": {
                    "type": "string",
                    "description": "Maximum initial server connection establishment time.\n"
                },
                "timeoutServer": {
                    "type": "string",
                    "description": "Maximum server connection inactivity time.\n"
                },
                "timeoutTunnel": {
                    "type": "string",
                    "description": "Maximum tunnel inactivity time.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the backend was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "failoverHost",
                "forwardPort",
                "forwardPortAlgorithm",
                "forwardProtocol",
                "healthCheckDelay",
                "healthCheckHttp",
                "healthCheckHttps",
                "healthCheckMaxRetries",
                "healthCheckPort",
                "healthCheckTcps",
                "healthCheckTimeout",
                "id",
                "ignoreSslServerVerify",
                "lbId",
                "name",
                "onMarkedDownAction",
                "proxyProtocol",
                "serverIps",
                "sslBridging",
                "stickySessions",
                "stickySessionsCookieName",
                "timeoutConnect",
                "timeoutServer",
                "timeoutTunnel",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getBackendsBackendHealthCheckHttp:getBackendsBackendHealthCheckHttp": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The expected HTTP status code.\n"
                },
                "hostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to use for health check requests.\n"
                },
                "method": {
                    "type": "string",
                    "description": "The HTTP method to use for health check requests.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "The SNI to use for HC requests over SSL.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The path of health check requests.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "hostHeader",
                "method",
                "sni",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getBackendsBackendHealthCheckTcp:getBackendsBackendHealthCheckTcp": {
            "type": "object"
        },
        "scaleway:loadbalancers/getCertificateCustomCertificate:getCertificateCustomCertificate": {
            "properties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted certificate chain\n"
                }
            },
            "type": "object",
            "required": [
                "certificateChain"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getCertificateLetsencrypt:getCertificateLetsencrypt": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The main domain name of the certificate\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The alternative domain names of the certificate\n"
                }
            },
            "type": "object",
            "required": [
                "commonName",
                "subjectAlternativeNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getFrontendAcl:getFrontendAcl": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getFrontendAclAction:getFrontendAclAction"
                    },
                    "description": "Action to undertake when an ACL filter matches\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's creation (RFC 3339 format)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the ACL\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getFrontendAclMatch:getFrontendAclMatch"
                    },
                    "description": "The ACL match rule\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the frontend.\n- When using 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 you should specify the `lb-id`\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's update (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "actions",
                "createdAt",
                "description",
                "matches",
                "name",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getFrontendAclAction:getFrontendAclAction": {
            "properties": {
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getFrontendAclActionRedirect:getFrontendAclActionRedirect"
                    },
                    "description": "Redirect parameters when using an ACL with \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e action\n"
                },
                "type": {
                    "type": "string",
                    "description": "The action type\n"
                }
            },
            "type": "object",
            "required": [
                "redirects",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getFrontendAclActionRedirect:getFrontendAclActionRedirect": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP redirect code to use\n"
                },
                "target": {
                    "type": "string",
                    "description": "An URL can be used in case of a location redirect\n"
                },
                "type": {
                    "type": "string",
                    "description": "The redirect type\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getFrontendAclMatch:getFrontendAclMatch": {
            "properties": {
                "httpFilter": {
                    "type": "string",
                    "description": "The HTTP filter to match\n"
                },
                "httpFilterOption": {
                    "type": "string",
                    "description": "You can use this field with\u003cspan pulumi-lang-nodejs=\" httpHeaderMatch \" pulumi-lang-dotnet=\" HttpHeaderMatch \" pulumi-lang-go=\" httpHeaderMatch \" pulumi-lang-python=\" http_header_match \" pulumi-lang-yaml=\" httpHeaderMatch \" pulumi-lang-java=\" httpHeaderMatch \"\u003e httpHeaderMatch \u003c/span\u003eacl type to set the header name to filter\n"
                },
                "httpFilterValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of possible values to match for the given HTTP filter\n"
                },
                "invert": {
                    "type": "boolean",
                    "description": "If set to true, the condition will be of type \"unless\"\n"
                },
                "ipSubnets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IPs or CIDR v4/v6 addresses of the client of the session to match\n"
                },
                "ipsEdgeServices": {
                    "type": "boolean",
                    "description": "Defines whether Edge Services IPs should be matched\n"
                }
            },
            "type": "object",
            "required": [
                "httpFilter",
                "httpFilterOption",
                "httpFilterValues",
                "invert",
                "ipSubnets",
                "ipsEdgeServices"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getFrontendsFrontend:getFrontendsFrontend": {
            "properties": {
                "backendId": {
                    "type": "string",
                    "description": "The Load Balancer backend ID this frontend is attached to.\n\u003e **Important:** Load Balancer backend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "certificateIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of certificate IDs that are used by the frontend.\n"
                },
                "connectionRateLimit": {
                    "type": "integer",
                    "description": "The rate limit for new connections established on this frontend. Use 0 value to disable, else value is connections per second.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the frontend was created (RFC 3339 format).\n"
                },
                "enableAccessLogs": {
                    "type": "boolean",
                    "description": "Defines whether to enable access logs on the frontend.\n"
                },
                "enableHttp3": {
                    "type": "boolean",
                    "description": "Whether HTTP/3 protocol is activated.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the associated frontend.\n\u003e **Important:** LB frontend IDs are zoned, which means they are of the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`\n"
                },
                "inboundPort": {
                    "type": "integer",
                    "description": "TCP port the frontend listens to.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The Load Balancer ID this frontend is attached to. Frontends with a matching ID are listed.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The frontend name to filter for. Frontends with a matching name are listed.\n"
                },
                "timeoutClient": {
                    "type": "string",
                    "description": "Maximum inactivity time on the client side.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the frontend was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "backendId",
                "certificateIds",
                "connectionRateLimit",
                "createdAt",
                "enableAccessLogs",
                "enableHttp3",
                "id",
                "inboundPort",
                "lbId",
                "name",
                "timeoutClient",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getIpsIp:getIpsIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the associated IP.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The ID of the associated Load BalancerD, if any\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags used as filter. IPs with these exact tags are listed.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IPs exist.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ipAddress",
                "lbId",
                "organizationId",
                "projectId",
                "reverse",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getLoadBalancerPrivateIp:getLoadBalancerPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IP address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getLoadBalancerPrivateNetwork:getLoadBalancerPrivateNetwork": {
            "properties": {
                "dhcpConfig": {
                    "type": "boolean",
                    "description": "Set to true if you want to let DHCP assign IP addresses\n"
                },
                "ipamIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ID of a pre-reserved IP address to assign to the Load Balancer on this Private Network\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The Private Network ID\n"
                },
                "staticConfigs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Define an IP address in the subnet of your private network that will be assigned to your load balancer instance\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of private network connection\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Defaults to provider \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancer exists.\n"
                }
            },
            "type": "object",
            "required": [
                "dhcpConfig",
                "ipamIds",
                "privateNetworkId",
                "staticConfigs",
                "status",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getLoadBalancersLb:getLoadBalancersLb": {
            "properties": {
                "backendCount": {
                    "type": "integer",
                    "description": "Number of backends the Load Balancer has.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Load Balancer.\n"
                },
                "frontendCount": {
                    "type": "integer",
                    "description": "Number of frontends the Load Balancer has.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "instances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getLoadBalancersLbInstance:getLoadBalancersLbInstance"
                    },
                    "description": "List of underlying Instances.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:loadbalancers/getLoadBalancersLbIp:getLoadBalancersLbIp"
                    },
                    "description": "List of IPs attached to the Load Balancer.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Load Balancer name to filter for. Load Balancers with a matching name are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "privateNetworkCount": {
                    "type": "integer",
                    "description": "Number of Private Networks attached to the Load balancer.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "routeCount": {
                    "type": "integer",
                    "description": "Number of routes the Load balancer has.\n"
                },
                "sslCompatibilityLevel": {
                    "type": "string",
                    "description": "Determines the minimal SSL version which needs to be supported on the client side.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the Load Balancer Instance. Possible values are: \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e.\n"
                },
                "subscriber": {
                    "type": "string",
                    "description": "The subscriber information.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. Load Balancers with these exact tags are listed.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The offer type of the Load Balancer.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was updated.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "backendCount",
                "createdAt",
                "description",
                "frontendCount",
                "id",
                "instances",
                "ips",
                "name",
                "organizationId",
                "privateNetworkCount",
                "projectId",
                "routeCount",
                "sslCompatibilityLevel",
                "status",
                "subscriber",
                "tags",
                "type",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getLoadBalancersLbInstance:getLoadBalancersLbInstance": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was created.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address of the instance\n"
                },
                "status": {
                    "type": "string",
                    "description": "The state of the Load Balancer Instance. Possible values are: \u003cspan pulumi-lang-nodejs=\"`unknown`\" pulumi-lang-dotnet=\"`Unknown`\" pulumi-lang-go=\"`unknown`\" pulumi-lang-python=\"`unknown`\" pulumi-lang-yaml=\"`unknown`\" pulumi-lang-java=\"`unknown`\"\u003e`unknown`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`migrating`\" pulumi-lang-dotnet=\"`Migrating`\" pulumi-lang-go=\"`migrating`\" pulumi-lang-python=\"`migrating`\" pulumi-lang-yaml=\"`migrating`\" pulumi-lang-java=\"`migrating`\"\u003e`migrating`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date on which the Load Balancer was updated.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "ipAddress",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getLoadBalancersLbIp:getLoadBalancersLbIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Load Balancer.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "UUID of the load balancer attached to the IP\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization the Load Balancer is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the Load Balancer is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "Reverse DNS attached to the IP\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Load Balancers exist.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ipAddress",
                "lbId",
                "organizationId",
                "projectId",
                "reverse"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:loadbalancers/getRoutesRoute:getRoutesRoute": {
            "properties": {
                "backendId": {
                    "type": "string",
                    "description": "The backend ID to redirect to\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the route was created (RFC 3339 format).\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The frontend ID (the origin of the redirection), to filter for. Routes with a matching frontend ID are listed.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated route ID.\n"
                },
                "matchHostHeader": {
                    "type": "string",
                    "description": "Specifies the host of the server to which the request is being sent.\n"
                },
                "matchSni": {
                    "type": "string",
                    "description": "Server Name Indication TLS extension field from an incoming connection made via an SSL/TLS transport layer.\n"
                },
                "matchSubdomains": {
                    "type": "boolean",
                    "description": "If true, all subdomains will match.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "The date on which the route was last updated (RFC 3339 format).\n"
                }
            },
            "type": "object",
            "required": [
                "backendId",
                "createdAt",
                "frontendId",
                "id",
                "matchHostHeader",
                "matchSni",
                "matchSubdomains",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:mnq/SnsCredentialsPermissions:SnsCredentialsPermissions": {
            "properties": {
                "canManage": {
                    "type": "boolean",
                    "description": ". Defines whether the user can manage the associated resource(s).\n"
                },
                "canPublish": {
                    "type": "boolean",
                    "description": ". Defines whether the user can publish messages to the service.\n"
                },
                "canReceive": {
                    "type": "boolean",
                    "description": ". Defines whether the user can receive messages from the service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "canManage",
                        "canPublish",
                        "canReceive"
                    ]
                }
            }
        },
        "scaleway:mnq/SqsCredentialsPermissions:SqsCredentialsPermissions": {
            "properties": {
                "canManage": {
                    "type": "boolean",
                    "description": ". Defines whether the user can manage the associated resource(s).\n"
                },
                "canPublish": {
                    "type": "boolean",
                    "description": ". Defines whether the user can publish messages to the service.\n"
                },
                "canReceive": {
                    "type": "boolean",
                    "description": ". Defines whether the user can receive messages from the service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "canManage",
                        "canPublish",
                        "canReceive"
                    ]
                }
            }
        },
        "scaleway:mnq/SqsQueueDeadLetterQueue:SqsQueueDeadLetterQueue": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the queue with format `{region/{project-id}/{queue-name}`\n"
                },
                "maxReceiveCount": {
                    "type": "integer",
                    "description": "The number of times a message is delivered to the source queue before being sent to the dead-letter queue. Must be between 1 and 1,000.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "maxReceiveCount"
            ]
        },
        "scaleway:mongodb/InstancePrivateIp:InstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:mongodb/InstancePrivateNetwork:InstancePrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for your endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP addresses for your endpoint.\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "pnId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecords",
                        "id",
                        "ips",
                        "pnId",
                        "port"
                    ]
                }
            }
        },
        "scaleway:mongodb/InstancePublicNetwork:InstancePublicNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "The DNS record of your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dnsRecord",
                        "id",
                        "port"
                    ]
                }
            }
        },
        "scaleway:mongodb/UserRole:UserRole": {
            "properties": {
                "anyDatabase": {
                    "type": "boolean",
                    "description": "Apply the role to all databases. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`databaseName`\" pulumi-lang-dotnet=\"`DatabaseName`\" pulumi-lang-go=\"`databaseName`\" pulumi-lang-python=\"`database_name`\" pulumi-lang-yaml=\"`databaseName`\" pulumi-lang-java=\"`databaseName`\"\u003e`databaseName`\u003c/span\u003e.\n"
                },
                "databaseName": {
                    "type": "string",
                    "description": "The database name for the role. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`anyDatabase`\" pulumi-lang-dotnet=\"`AnyDatabase`\" pulumi-lang-go=\"`anyDatabase`\" pulumi-lang-python=\"`any_database`\" pulumi-lang-yaml=\"`anyDatabase`\" pulumi-lang-java=\"`anyDatabase`\"\u003e`anyDatabase`\u003c/span\u003e.\n"
                },
                "role": {
                    "type": "string",
                    "description": "The role name. Valid values are \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readWrite`\" pulumi-lang-dotnet=\"`ReadWrite`\" pulumi-lang-go=\"`readWrite`\" pulumi-lang-python=\"`read_write`\" pulumi-lang-yaml=\"`readWrite`\" pulumi-lang-java=\"`readWrite`\"\u003e`readWrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dbAdmin`\" pulumi-lang-dotnet=\"`DbAdmin`\" pulumi-lang-go=\"`dbAdmin`\" pulumi-lang-python=\"`db_admin`\" pulumi-lang-yaml=\"`dbAdmin`\" pulumi-lang-java=\"`dbAdmin`\"\u003e`dbAdmin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sync`\" pulumi-lang-dotnet=\"`Sync`\" pulumi-lang-go=\"`sync`\" pulumi-lang-python=\"`sync`\" pulumi-lang-yaml=\"`sync`\" pulumi-lang-java=\"`sync`\"\u003e`sync`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "role"
            ]
        },
        "scaleway:mongodb/getInstancePrivateIp:getInstancePrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:mongodb/getInstancePrivateNetwork:getInstancePrivateNetwork": {
            "properties": {
                "dnsRecords": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of DNS records for your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP addresses for your endpoint\n"
                },
                "pnId": {
                    "type": "string",
                    "description": "The private network ID\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecords",
                "id",
                "ips",
                "pnId",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:mongodb/getInstancePublicNetwork:getInstancePublicNetwork": {
            "properties": {
                "dnsRecord": {
                    "type": "string",
                    "description": "The DNS record of your endpoint\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the MongoDB® Instance.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint\n"
                }
            },
            "type": "object",
            "required": [
                "dnsRecord",
                "id",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/AclRule:AclRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The policy to apply to the packet.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The rule description.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination IP range to which this rule applies (CIDR notation with subnet mask).\n"
                },
                "dstPortHigh": {
                    "type": "integer",
                    "description": "The ending port of the destination port range to which this rule applies (inclusive).\n"
                },
                "dstPortLow": {
                    "type": "integer",
                    "description": "The starting port of the destination port range to which this rule applies (inclusive).\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol to which this rule applies. Default value: ANY.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The Source IP range to which this rule applies (CIDR notation with subnet mask).\n"
                },
                "srcPortHigh": {
                    "type": "integer",
                    "description": "The ending port of the source port range to which this rule applies (inclusive).\n"
                },
                "srcPortLow": {
                    "type": "integer",
                    "description": "The starting port of the source port range to which this rule applies (inclusive).\n"
                }
            },
            "type": "object"
        },
        "scaleway:network/GatewayNetworkIpamConfig:GatewayNetworkIpamConfig": {
            "properties": {
                "ipamIpId": {
                    "type": "string",
                    "description": "Use this IPAM-booked IP ID as the Gateway's IP in this Private Network.\n"
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Defines whether to enable the default route on the GatewayNetwork.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipamIpId"
                    ]
                }
            }
        },
        "scaleway:network/GatewayNetworkPrivateIp:GatewayNetworkPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:network/PrivateNetworkIpv4Subnet:PrivateNetworkIpv4Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in hexadecimal notation, e.g., '2001:db8::' for a '2001:db8::/64' subnet.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The subnet ID.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 64 for a 'ffff:ffff:ffff:ffff::' mask.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR.\n",
                    "willReplaceOnChanges": true
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "createdAt",
                        "id",
                        "prefixLength",
                        "subnet",
                        "subnetMask",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:network/PrivateNetworkIpv6Subnet:PrivateNetworkIpv6Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in hexadecimal notation, e.g., '2001:db8::' for a '2001:db8::/64' subnet.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The subnet ID.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 64 for a 'ffff:ffff:ffff:ffff::' mask.\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR.\n",
                    "willReplaceOnChanges": true
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "createdAt",
                        "id",
                        "prefixLength",
                        "subnet",
                        "subnetMask",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:network/getAclRule:getAclRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The policy to apply to the packet\n"
                },
                "description": {
                    "type": "string",
                    "description": "The rule description\n"
                },
                "destination": {
                    "type": "string",
                    "description": "Destination IP range to which this rule applies (CIDR notation with subnet mask)\n"
                },
                "dstPortHigh": {
                    "type": "integer",
                    "description": "Ending port of the destination port range to which this rule applies (inclusive)\n"
                },
                "dstPortLow": {
                    "type": "integer",
                    "description": "Starting port of the destination port range to which this rule applies (inclusive)\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol to which this rule applies. Default value: ANY\n"
                },
                "source": {
                    "type": "string",
                    "description": "Source IP range to which this rule applies (CIDR notation with subnet mask)\n"
                },
                "srcPortHigh": {
                    "type": "integer",
                    "description": "Ending port of the source port range to which this rule applies (inclusive)\n"
                },
                "srcPortLow": {
                    "type": "integer",
                    "description": "Starting port of the source port range to which this rule applies (inclusive)\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "description",
                "destination",
                "dstPortHigh",
                "dstPortLow",
                "protocol",
                "source",
                "srcPortHigh",
                "srcPortLow"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getGatewayNetworkIpamConfig:getGatewayNetworkIpamConfig": {
            "properties": {
                "ipamIpId": {
                    "type": "string",
                    "description": "Use this IPAM-booked IP ID as the Gateway's IP in this Private Network\n"
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Defines whether the default route is enabled on that Gateway Network\n"
                }
            },
            "type": "object",
            "required": [
                "ipamIpId",
                "pushDefaultRoute"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getGatewayNetworkPrivateIp:getGatewayNetworkPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getPrivateNetworkIpv4Subnet:getPrivateNetworkIpv4Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in dotted decimal notation, e.g., '192.168.0.0' for a '192.168.0.0/24' subnet\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 24 for a 255.255.255.0 mask\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR\n"
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "prefixLength",
                "subnet",
                "subnetMask",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getPrivateNetworkIpv6Subnet:getPrivateNetworkIpv6Subnet": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The network address of the subnet in dotted decimal notation, e.g., '192.168.0.0' for a '192.168.0.0/24' subnet\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The length of the network prefix, e.g., 24 for a 255.255.255.0 mask\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet CIDR\n"
                },
                "subnetMask": {
                    "type": "string",
                    "description": "The subnet mask expressed in dotted decimal notation, e.g., '255.255.255.0' for a /24 subnet\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "createdAt",
                "id",
                "prefixLength",
                "subnet",
                "subnetMask",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getRoutesRoute:getRoutesRoute": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the route was created (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the route.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination IP or IP range of the route.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the route.\n\u003e **Important:** route IDs are regional, which means they are of the form `{region}/{id}`, e.g. `fr-par/11111111-1111-1111-1111-111111111111\n"
                },
                "nexthopIp": {
                    "type": "string",
                    "description": "The IP of the route's next hop.\n"
                },
                "nexthopName": {
                    "type": "string",
                    "description": "The name of the route's next hop.\n"
                },
                "nexthopPrivateNetworkId": {
                    "type": "string",
                    "description": "The next hop private network ID to filter for. routes with a similar next hop private network ID are listed.\n"
                },
                "nexthopResourceId": {
                    "type": "string",
                    "description": "The next hop resource ID to filter for. routes with a similar next hop resource ID are listed.\n"
                },
                "nexthopResourceType": {
                    "type": "string",
                    "description": "The next hop resource type to filter for. routes with a similar next hop resource type are listed.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the routes exist.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. routes with these exact tags are listed.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC ID to filter for. routes with a similar VPC ID are listed.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "destination",
                "id",
                "nexthopIp",
                "nexthopName",
                "nexthopPrivateNetworkId",
                "nexthopResourceId",
                "nexthopResourceType",
                "tags",
                "vpcId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:network/getVpcsVpc:getVpcsVpc": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of VPC's creation (RFC 3339 format).\n"
                },
                "id": {
                    "type": "string",
                    "description": "The associated VPC ID.\n\u003e **Important:** VPC IDs are regional, which means they are of the form `{region}/{id}`, e.g. `fr-par/11111111-1111-1111-1111-111111111111\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Defines whether the VPC is the default one for its Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The VPC name to filter for. VPCs with a similar name are listed.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the VPC is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project the VPC is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the VPCs exist.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to filter for. VPCs with these exact tags are listed.\n"
                },
                "updateAt": {
                    "type": "string",
                    "description": "Date on which the VPC was last updated (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "isDefault",
                "name",
                "organizationId",
                "projectId",
                "tags",
                "updateAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/BucketAclAccessControlPolicy:BucketAclAccessControlPolicy": {
            "properties": {
                "grants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:object/BucketAclAccessControlPolicyGrant:BucketAclAccessControlPolicyGrant"
                    },
                    "description": "Grant\n"
                },
                "owner": {
                    "$ref": "#/types/scaleway:object/BucketAclAccessControlPolicyOwner:BucketAclAccessControlPolicyOwner",
                    "description": "Configuration block of the bucket project owner's display organization ID.\n"
                }
            },
            "type": "object",
            "required": [
                "owner"
            ]
        },
        "scaleway:object/BucketAclAccessControlPolicyGrant:BucketAclAccessControlPolicyGrant": {
            "properties": {
                "grantee": {
                    "$ref": "#/types/scaleway:object/BucketAclAccessControlPolicyGrantGrantee:BucketAclAccessControlPolicyGrantGrantee",
                    "description": "Configuration block for the project being granted permissions.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Logging permissions assigned to the grantee for the bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "permission"
            ]
        },
        "scaleway:object/BucketAclAccessControlPolicyGrantGrantee:BucketAclAccessControlPolicyGrantGrantee": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Display name of the grantee to grant access to.\n"
                },
                "id": {
                    "type": "string",
                    "description": "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, \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 and \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e separated by (`/`).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of grantee. Valid values: `CanonicalUser`, `Group`\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The uri of the grantee if you are granting permissions to a predefined group.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "scaleway:object/BucketAclAccessControlPolicyOwner:BucketAclAccessControlPolicyOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The project ID of the grantee.\n"
                },
                "id": {
                    "type": "string",
                    "description": "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, \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 and \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e separated by (`/`).\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "id"
                    ]
                }
            }
        },
        "scaleway:object/BucketCorsRule:BucketCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which headers are allowed.\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which methods are allowed (`GET`, `PUT`, `POST`, `DELETE` or `HEAD`).\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies which origins are allowed.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies header exposure in the response.\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "Specifies time in seconds that the browser can cache the response for a preflight request.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedMethods",
                "allowedOrigins"
            ]
        },
        "scaleway:object/BucketLifecycleRule:BucketLifecycleRule": {
            "properties": {
                "abortIncompleteMultipartUploadDays": {
                    "type": "integer",
                    "description": "Specifies the number of days after initiating a multipart upload when the multipart upload must be completed.\n\n\u003e **Important:** Avoid using \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e for `AbortIncompleteMultipartUpload`, as any incomplete multipart upload will be billed\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "The element value can be either Enabled or Disabled. If a rule is disabled, Scaleway Object Storage does not perform any of the actions defined in the rule.\n"
                },
                "expiration": {
                    "$ref": "#/types/scaleway:object/BucketLifecycleRuleExpiration:BucketLifecycleRuleExpiration",
                    "description": "Specifies a period in the object's expire\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for the rule. Must be less than or equal to 255 characters in length.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Object key prefix identifying one or more objects to which the rule applies.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Specifies object tags key and value.\n"
                },
                "transitions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:object/BucketLifecycleRuleTransition:BucketLifecycleRuleTransition"
                    },
                    "description": "Define when objects transition to another storage class\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "id"
                    ]
                }
            }
        },
        "scaleway:object/BucketLifecycleRuleExpiration:BucketLifecycleRuleExpiration": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect.\n"
                }
            },
            "type": "object",
            "required": [
                "days"
            ]
        },
        "scaleway:object/BucketLifecycleRuleTransition:BucketLifecycleRuleTransition": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect.\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway [storage class](https://www.scaleway.com/en/docs/object-storage/concepts/#storage-class) `STANDARD`, `GLACIER`, `ONEZONE_IA`  to which you want the object to transition.\n\n\n\u003e **Important:**  If versioning is enabled, this rule only deletes the current version of an object.\n\u003e **Important:**  If versioning is enabled, this rule only deletes the current version of an object.\n\n\n\u003e **Important:**  `ONEZONE_IA` is only available in `fr-par` region. The storage class `GLACIER` is not available in `pl-waw` region.\n\u003e **Important:**  `ONEZONE_IA` is only available in `fr-par` region. The storage class `GLACIER` is not available in `pl-waw` region.\n"
                }
            },
            "type": "object",
            "required": [
                "storageClass"
            ]
        },
        "scaleway:object/BucketLockConfigurationRule:BucketLockConfigurationRule": {
            "properties": {
                "defaultRetention": {
                    "$ref": "#/types/scaleway:object/BucketLockConfigurationRuleDefaultRetention:BucketLockConfigurationRuleDefaultRetention",
                    "description": "The default retention for the lock.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultRetention"
            ]
        },
        "scaleway:object/BucketLockConfigurationRuleDefaultRetention:BucketLockConfigurationRuleDefaultRetention": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "The number of days you want to specify for the default retention period.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The default object lock retention mode you want to apply to new objects placed in the specified bucket. Valid values are `GOVERNANCE` or `COMPLIANCE`. Refer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/object-lock/#retention-modes) for more information on retention modes.\n"
                },
                "years": {
                    "type": "integer",
                    "description": "The number of years you want to specify for the default retention period.\n"
                }
            },
            "type": "object",
            "required": [
                "mode"
            ]
        },
        "scaleway:object/BucketServerSideEncryptionConfigurationRule:BucketServerSideEncryptionConfigurationRule": {
            "properties": {
                "applyServerSideEncryptionByDefault": {
                    "$ref": "#/types/scaleway:object/BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault",
                    "description": "Single object for setting server-side encryption by default.\n"
                }
            },
            "type": "object"
        },
        "scaleway:object/BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault": {
            "properties": {
                "sseAlgorithm": {
                    "type": "string",
                    "description": "Server-side encryption algorithm to use. Valid values are `AES256`.\n"
                }
            },
            "type": "object",
            "required": [
                "sseAlgorithm"
            ]
        },
        "scaleway:object/BucketVersioning:BucketVersioning": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled"
                    ]
                }
            }
        },
        "scaleway:object/BucketWebsiteConfigurationErrorDocument:BucketWebsiteConfigurationErrorDocument": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The object key name to use when a 4XX class error occurs.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "scaleway:object/BucketWebsiteConfigurationIndexDocument:BucketWebsiteConfigurationIndexDocument": {
            "properties": {
                "suffix": {
                    "type": "string",
                    "description": "A suffix that is appended to a request targeting a specific directory on the website endpoint.\n\n\u003e **Important:** The suffix must not be empty and must not include a slash character. The routing is not supported.\n"
                }
            },
            "type": "object",
            "required": [
                "suffix"
            ]
        },
        "scaleway:object/getBucketCorsRule:getBucketCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed headers in the CORS rule\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed HTTP methods allowed in the CORS rule\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowed origins allowed in the CORS rule\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Exposed headers in the CORS rule\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "Max age of the CORS rule\n"
                }
            },
            "type": "object",
            "required": [
                "allowedHeaders",
                "allowedMethods",
                "allowedOrigins",
                "exposeHeaders",
                "maxAgeSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketLifecycleRule:getBucketLifecycleRule": {
            "properties": {
                "abortIncompleteMultipartUploadDays": {
                    "type": "integer",
                    "description": "Specifies the number of days after initiating a multipart upload when the multipart upload must be completed\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Specifies if the configuration rule is Enabled or Disabled\n"
                },
                "expirations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:object/getBucketLifecycleRuleExpiration:getBucketLifecycleRuleExpiration"
                    },
                    "description": "Specifies a period in the object's expire\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the bucket.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The prefix identifying one or more objects to which the rule applies\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tags associated with the bucket lifecycle\n"
                },
                "transitions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:object/getBucketLifecycleRuleTransition:getBucketLifecycleRuleTransition"
                    },
                    "description": "Define when objects transition to another storage class\n"
                }
            },
            "type": "object",
            "required": [
                "abortIncompleteMultipartUploadDays",
                "enabled",
                "expirations",
                "id",
                "prefix",
                "tags",
                "transitions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketLifecycleRuleExpiration:getBucketLifecycleRuleExpiration": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect\n"
                }
            },
            "type": "object",
            "required": [
                "days"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketLifecycleRuleTransition:getBucketLifecycleRuleTransition": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the specific rule action takes effect\n"
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway Object Storage class to which you want the object to transition\n"
                }
            },
            "type": "object",
            "required": [
                "days",
                "storageClass"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketServerSideEncryptionConfigurationRule:getBucketServerSideEncryptionConfigurationRule": {
            "properties": {
                "applyServerSideEncryptionByDefaults": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:object/getBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:getBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault"
                    },
                    "description": "(List of Object) Single object for setting server-side encryption by default.\n"
                }
            },
            "type": "object",
            "required": [
                "applyServerSideEncryptionByDefaults"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault:getBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault": {
            "properties": {
                "sseAlgorithm": {
                    "type": "string",
                    "description": "(String) Server-side encryption algorithm to use. Valid values are AES256.\n"
                }
            },
            "type": "object",
            "required": [
                "sseAlgorithm"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:object/getBucketVersioning:getBucketVersioning": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/AlertManagerContactPoint:AlertManagerContactPoint": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Email addresses for the alert receivers\n"
                }
            },
            "type": "object"
        },
        "scaleway:observability/CockpitEndpoint:CockpitEndpoint": {
            "properties": {
                "alertmanagerUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for the [Alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager).\n"
                },
                "grafanaUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for Grafana.\n"
                },
                "logsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [logs](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#logs) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "metricsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [metrics](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#metric) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "tracesUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [traces](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#traces) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "alertmanagerUrl",
                        "grafanaUrl",
                        "logsUrl",
                        "metricsUrl",
                        "tracesUrl"
                    ]
                }
            }
        },
        "scaleway:observability/CockpitPushUrl:CockpitPushUrl": {
            "properties": {
                "pushLogsUrl": {
                    "type": "string",
                    "description": "Push URL for logs (Grafana Loki)\n"
                },
                "pushMetricsUrl": {
                    "type": "string",
                    "description": "Push URL for metrics (Grafana Mimir)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pushLogsUrl",
                        "pushMetricsUrl"
                    ]
                }
            }
        },
        "scaleway:observability/ExporterDatadogDestination:ExporterDatadogDestination": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key. Sensitive.\n",
                    "secret": true
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog endpoint URL. Defaults to `https://api.datadoghq.com`.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ]
        },
        "scaleway:observability/ExporterOtlpDestination:ExporterOtlpDestination": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OTLP endpoint URL.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Headers to include in requests.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "scaleway:observability/TokenScopes:TokenScopes": {
            "properties": {
                "queryLogs": {
                    "type": "boolean",
                    "description": "Permission to query logs.\n",
                    "willReplaceOnChanges": true
                },
                "queryMetrics": {
                    "type": "boolean",
                    "description": "Permission to query metrics.\n",
                    "willReplaceOnChanges": true
                },
                "queryTraces": {
                    "type": "boolean",
                    "description": "Permission to query traces.\n",
                    "willReplaceOnChanges": true
                },
                "setupAlerts": {
                    "type": "boolean",
                    "description": "Permission to set up alerts.\n",
                    "willReplaceOnChanges": true
                },
                "setupLogsRules": {
                    "type": "boolean",
                    "description": "Permission to set up logs rules.\n",
                    "willReplaceOnChanges": true
                },
                "setupMetricsRules": {
                    "type": "boolean",
                    "description": "Permission to set up metrics rules.\n",
                    "willReplaceOnChanges": true
                },
                "writeLogs": {
                    "type": "boolean",
                    "description": "Permission to write logs.\n",
                    "willReplaceOnChanges": true
                },
                "writeMetrics": {
                    "type": "boolean",
                    "description": "Permission to write metrics.\n",
                    "willReplaceOnChanges": true
                },
                "writeTraces": {
                    "type": "boolean",
                    "description": "Permission to write traces.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "scaleway:observability/getExporterDatadogDestination:getExporterDatadogDestination": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog endpoint URL\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey",
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getExporterOtlpDestination:getExporterOtlpDestination": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OTLP endpoint URL\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Headers to include in requests\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint",
                "headers"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getInstanceEndpoint:getInstanceEndpoint": {
            "properties": {
                "alertmanagerUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for the [Alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager).\n"
                },
                "grafanaUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for Grafana.\n"
                },
                "logsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [logs](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#logs) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "metricsUrl": {
                    "type": "string",
                    "description": "(Deprecated) URL for [metrics](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#metric) to retrieve in the [Data sources tab](https://console.scaleway.com/cockpit/dataSource) of the Scaleway console.\n"
                },
                "tracesUrl": {
                    "type": "string",
                    "description": "The traces URL.\n"
                }
            },
            "type": "object",
            "required": [
                "alertmanagerUrl",
                "grafanaUrl",
                "logsUrl",
                "metricsUrl",
                "tracesUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getInstancePushUrl:getInstancePushUrl": {
            "properties": {
                "pushLogsUrl": {
                    "type": "string",
                    "description": "Push URL for logs (Grafana Loki)\n"
                },
                "pushMetricsUrl": {
                    "type": "string",
                    "description": "Push URL for metrics (Grafana Mimir)\n"
                }
            },
            "type": "object",
            "required": [
                "pushLogsUrl",
                "pushMetricsUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getPreconfiguredAlertAlert:getPreconfiguredAlertAlert": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of annotations attached to the alert.\n"
                },
                "dataSourceId": {
                    "type": "string",
                    "description": "Filter alerts by data source ID.\n"
                },
                "displayDescription": {
                    "type": "string",
                    "description": "Human-readable description of the alert.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Human-readable name of the alert.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "Duration for which the condition must be true before the alert fires (e.g., \"5m\").\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the alert rule.\n"
                },
                "preconfiguredRuleId": {
                    "type": "string",
                    "description": "Unique identifier of the preconfigured rule. Use this ID in \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.AlertManager`\" pulumi-lang-dotnet=\"`scaleway.observability.AlertManager`\" pulumi-lang-go=\"`observability.AlertManager`\" pulumi-lang-python=\"`observability.AlertManager`\" pulumi-lang-yaml=\"`scaleway.observability.AlertManager`\" pulumi-lang-java=\"`scaleway.observability.AlertManager`\"\u003e`scaleway.observability.AlertManager`\u003c/span\u003e resource.\n"
                },
                "productFamily": {
                    "type": "string",
                    "description": "Family of the product (e.g., \"compute\", \"storage\", \"network\").\n"
                },
                "productName": {
                    "type": "string",
                    "description": "Scaleway product associated with the alert (e.g., \"instance\", \"rdb\", \"kubernetes\").\n"
                },
                "rule": {
                    "type": "string",
                    "description": "PromQL expression defining the alert condition.\n"
                },
                "ruleStatus": {
                    "type": "string",
                    "description": "Filter alerts by rule status. Valid values are \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 or \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"
                },
                "state": {
                    "type": "string",
                    "description": "Current state of the alert (\u003cspan pulumi-lang-nodejs=\"`inactive`\" pulumi-lang-dotnet=\"`Inactive`\" pulumi-lang-go=\"`inactive`\" pulumi-lang-python=\"`inactive`\" pulumi-lang-yaml=\"`inactive`\" pulumi-lang-java=\"`inactive`\"\u003e`inactive`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`firing`\" pulumi-lang-dotnet=\"`Firing`\" pulumi-lang-go=\"`firing`\" pulumi-lang-python=\"`firing`\" pulumi-lang-yaml=\"`firing`\" pulumi-lang-java=\"`firing`\"\u003e`firing`\u003c/span\u003e).\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "dataSourceId",
                "displayDescription",
                "displayName",
                "duration",
                "name",
                "preconfiguredRuleId",
                "productFamily",
                "productName",
                "rule",
                "ruleStatus",
                "state"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getProductsProduct:getProductsProduct": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Human-readable display name of the product.\n"
                },
                "familyName": {
                    "type": "string",
                    "description": "Product family name.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Product name to use in\u003cspan pulumi-lang-nodejs=\" exportedProducts \" pulumi-lang-dotnet=\" ExportedProducts \" pulumi-lang-go=\" exportedProducts \" pulumi-lang-python=\" exported_products \" pulumi-lang-yaml=\" exportedProducts \" pulumi-lang-java=\" exportedProducts \"\u003e exportedProducts \u003c/span\u003e(e.g. cockpit, LB, object-storage).\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "familyName",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:observability/getSourcesSource:getSourcesSource": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the cockpit datasource.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the data source.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Filter sources by name.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "Filter sources by origin. Possible values are: \u003cspan pulumi-lang-nodejs=\"`scaleway`\" pulumi-lang-dotnet=\"`Scaleway`\" pulumi-lang-go=\"`scaleway`\" pulumi-lang-python=\"`scaleway`\" pulumi-lang-yaml=\"`scaleway`\" pulumi-lang-java=\"`scaleway`\"\u003e`scaleway`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID the cockpit sources are associated with.\n"
                },
                "pushUrl": {
                    "type": "string",
                    "description": "The URL endpoint used for pushing data to the cockpit data source.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region in which the cockpit sources are located.\n"
                },
                "retentionDays": {
                    "type": "integer",
                    "description": "The number of days to retain data.\n"
                },
                "synchronizedWithGrafana": {
                    "type": "boolean",
                    "description": "Indicates whether the data source is synchronized with Grafana.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Filter sources by type. Possible values are: \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`traces`\" pulumi-lang-dotnet=\"`Traces`\" pulumi-lang-go=\"`traces`\" pulumi-lang-python=\"`traces`\" pulumi-lang-yaml=\"`traces`\" pulumi-lang-java=\"`traces`\"\u003e`traces`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the cockpit datasource.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the datasource.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "id",
                "name",
                "origin",
                "projectId",
                "pushUrl",
                "region",
                "retentionDays",
                "synchronizedWithGrafana",
                "type",
                "updatedAt",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:opensearch/DeploymentEndpoint:DeploymentEndpoint": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "Private network ID if the endpoint is private.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Whether the endpoint is public (true) or private (false).\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:opensearch/DeploymentEndpointService:DeploymentEndpointService"
                    },
                    "description": "List of services exposed on the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "privateNetworkId",
                        "public",
                        "services"
                    ]
                }
            }
        },
        "scaleway:opensearch/DeploymentEndpointService:DeploymentEndpointService": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the OpenSearch deployment. If not specified, a random name will be generated.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Service port number.\n"
                },
                "url": {
                    "type": "string",
                    "description": "Full URL to access the service (e.g., \"https://abc-123.searchdb.fr-par.scw.cloud:9200\").\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "port",
                        "url"
                    ]
                }
            }
        },
        "scaleway:opensearch/DeploymentPrivateNetwork:DeploymentPrivateNetwork": {
            "properties": {
                "privateNetworkId": {
                    "type": "string",
                    "description": "Private network ID if the endpoint is private.\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ]
        },
        "scaleway:opensearch/DeploymentVolume:DeploymentVolume": {
            "properties": {
                "sizeInGb": {
                    "type": "integer",
                    "description": "Volume size in GB. Changing this forces recreation of the deployment.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Volume type. Valid values are \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e (5K IOPS) or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e (15K IOPS). Changing this forces recreation of the deployment.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "sizeInGb",
                "type"
            ]
        },
        "scaleway:opensearch/getDeploymentEndpoint:getDeploymentEndpoint": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Endpoint ID\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "Private network ID if applicable\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Whether the endpoint is public\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:opensearch/getDeploymentEndpointService:getDeploymentEndpointService"
                    },
                    "description": "List of services\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "privateNetworkId",
                "public",
                "services"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:opensearch/getDeploymentEndpointService:getDeploymentEndpointService": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the OpenSearch deployment. Only one 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=\"`deploymentId`\" pulumi-lang-dotnet=\"`DeploymentId`\" pulumi-lang-go=\"`deploymentId`\" pulumi-lang-python=\"`deployment_id`\" pulumi-lang-yaml=\"`deploymentId`\" pulumi-lang-java=\"`deploymentId`\"\u003e`deploymentId`\u003c/span\u003e should be specified.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Service port\n"
                },
                "url": {
                    "type": "string",
                    "description": "Service URL\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:opensearch/getDeploymentPrivateNetwork:getDeploymentPrivateNetwork": {
            "properties": {
                "privateNetworkId": {
                    "type": "string",
                    "description": "UUID of the Private Network\n"
                }
            },
            "type": "object",
            "required": [
                "privateNetworkId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:opensearch/getDeploymentVolume:getDeploymentVolume": {
            "properties": {
                "sizeInGb": {
                    "type": "integer",
                    "description": "Volume size in GB\n"
                },
                "type": {
                    "type": "string",
                    "description": "Volume type (sbs_5k, sbs_15k)\n"
                }
            },
            "type": "object",
            "required": [
                "sizeInGb",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:redis/ClusterAcl:ClusterAcl": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A text describing this rule. Default description: `Allow IP`\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e conflict with \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. Only one should be specified.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IPv4 address or range to whitelist in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation). IPv6 is not supported by the Scaleway API.\n"
                }
            },
            "type": "object",
            "required": [
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "id",
                        "ip"
                    ]
                }
            }
        },
        "scaleway:redis/ClusterPrivateIp:ClusterPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "address",
                        "id"
                    ]
                }
            }
        },
        "scaleway:redis/ClusterPrivateNetwork:ClusterPrivateNetwork": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The UUID of the Private Network resource.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "serviceIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Endpoint IPv4 addresses in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (IPv6 is not supported by the Scaleway API). You must provide at least one IP per node.\nKeep in mind that in cluster mode you cannot edit your Private Network after its creation so if you want to be able to\nscale your cluster horizontally (adding nodes) later, you should provide more IPs than nodes.\nIf not set, the IP network address within the private subnet is determined by the IP Address Management (IPAM) service.\n\u003e **Important:** When IPAM is enabled, the IPs specified here will be ignored and should not be provided.\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e conflicts with \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e. Only one should be specified.\n\n\u003e **Important:** The way to use Private Networks differs whether you are using Redis™ in Standalone or cluster mode.\n\n- Standalone mode (\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e = 1) : you can attach as many Private Networks as you want (each must be a separate\nblock). If you detach your only Private Network, your cluster won't be reachable until you define a new Private or\nPublic Network. You can modify your \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e and its specs, you can have both a Private and Public Network side\nby side.\n\n- Cluster mode (\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e \u003e 2) : you can define a single Private Network as you create your cluster, you won't be\nable to edit or detach it afterward, unless you create another cluster. This also means that, if you are using a static\nconfiguration (\u003cspan pulumi-lang-nodejs=\"`serviceIps`\" pulumi-lang-dotnet=\"`ServiceIps`\" pulumi-lang-go=\"`serviceIps`\" pulumi-lang-python=\"`service_ips`\" pulumi-lang-yaml=\"`serviceIps`\" pulumi-lang-java=\"`serviceIps`\"\u003e`serviceIps`\u003c/span\u003e), you won't be able to scale your cluster horizontally (add more nodes) since it would\nrequire updating the Private Network to add IPs.\nYour \u003cspan pulumi-lang-nodejs=\"`serviceIps`\" pulumi-lang-dotnet=\"`ServiceIps`\" pulumi-lang-go=\"`serviceIps`\" pulumi-lang-python=\"`service_ips`\" pulumi-lang-yaml=\"`serviceIps`\" pulumi-lang-java=\"`serviceIps`\"\u003e`serviceIps`\u003c/span\u003e must be listed as follows:\n\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the\nRedis™ cluster should be created.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointId",
                        "id",
                        "ips",
                        "port",
                        "serviceIps",
                        "zone"
                    ]
                }
            }
        },
        "scaleway:redis/ClusterPublicNetwork:ClusterPublicNetwork": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the IPv4 address resource.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "ips",
                        "port"
                    ]
                }
            }
        },
        "scaleway:redis/getClusterAcl:getClusterAcl": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the rule.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 network address of the rule in CIDR notation (IPv6 is not supported by the Scaleway API).\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "id",
                "ip"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:redis/getClusterPrivateIp:getClusterPrivateIp": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The private IPv4 address\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:redis/getClusterPrivateNetwork:getClusterPrivateNetwork": {
            "properties": {
                "endpointId": {
                    "type": "string",
                    "description": "The ID of the endpoint.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                },
                "serviceIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the private network in CIDR notation (IPv6 is not supported by the Scaleway API)\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\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) The zone in which the server exists.\n"
                }
            },
            "type": "object",
            "required": [
                "endpointId",
                "id",
                "ips",
                "port",
                "serviceIps",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:redis/getClusterPublicNetwork:getClusterPublicNetwork": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the Redis cluster.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "TCP port of the endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ips",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/ConnectionBgpConfigIpv4:ConnectionBgpConfigIpv4": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side (within the tunnel).\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side (within the tunnel).\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID used for this BGP session.\n"
                }
            },
            "type": "object",
            "required": [
                "routingPolicyId"
            ]
        },
        "scaleway:s2svpn/ConnectionBgpConfigIpv6:ConnectionBgpConfigIpv6": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side (within the tunnel).\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side (within the tunnel).\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID used for this BGP session.\n"
                }
            },
            "type": "object",
            "required": [
                "routingPolicyId"
            ]
        },
        "scaleway:s2svpn/ConnectionBgpSessionIpv4:ConnectionBgpSessionIpv4": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side (within the tunnel).\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side (within the tunnel).\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID used for this BGP session.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "peerPrivateIp",
                        "privateIp",
                        "routingPolicyId"
                    ]
                }
            }
        },
        "scaleway:s2svpn/ConnectionBgpSessionIpv6:ConnectionBgpSessionIpv6": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side (within the tunnel).\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side (within the tunnel).\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID used for this BGP session.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "peerPrivateIp",
                        "privateIp",
                        "routingPolicyId"
                    ]
                }
            }
        },
        "scaleway:s2svpn/ConnectionEspCipher:ConnectionEspCipher": {
            "properties": {
                "dhGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman group\n"
                },
                "encryption": {
                    "type": "string",
                    "description": "The encryption algorithm\n"
                },
                "integrity": {
                    "type": "string",
                    "description": "The integrity/hash algorithm\n"
                }
            },
            "type": "object",
            "required": [
                "encryption"
            ]
        },
        "scaleway:s2svpn/ConnectionIkev2Cipher:ConnectionIkev2Cipher": {
            "properties": {
                "dhGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman group\n"
                },
                "encryption": {
                    "type": "string",
                    "description": "The encryption algorithm\n"
                },
                "integrity": {
                    "type": "string",
                    "description": "The integrity/hash algorithm\n"
                }
            },
            "type": "object",
            "required": [
                "encryption"
            ]
        },
        "scaleway:s2svpn/GatewayPublicConfig:GatewayPublicConfig": {
            "properties": {
                "ipamIpv4Id": {
                    "type": "string",
                    "description": "The ID of the IPAM IPv4 address to use as the public IP for the VPN gateway.\n"
                },
                "ipamIpv6Id": {
                    "type": "string",
                    "description": "The ID of the IPAM IPv6 address to use as the public IP for the VPN gateway.\n"
                }
            },
            "type": "object"
        },
        "scaleway:s2svpn/getConnectionBgpConfigIpv4:getConnectionBgpConfigIpv4": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The ID of the routing policy to use for BGP route filtering\n"
                }
            },
            "type": "object",
            "required": [
                "peerPrivateIp",
                "privateIp",
                "routingPolicyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getConnectionBgpConfigIpv6:getConnectionBgpConfigIpv6": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The ID of the routing policy to use for BGP route filtering\n"
                }
            },
            "type": "object",
            "required": [
                "peerPrivateIp",
                "privateIp",
                "routingPolicyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getConnectionBgpSessionIpv4:getConnectionBgpSessionIpv4": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID\n"
                }
            },
            "type": "object",
            "required": [
                "peerPrivateIp",
                "privateIp",
                "routingPolicyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getConnectionBgpSessionIpv6:getConnectionBgpSessionIpv6": {
            "properties": {
                "peerPrivateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on customer side\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The BGP peer IP on Scaleway side\n"
                },
                "routingPolicyId": {
                    "type": "string",
                    "description": "The routing policy ID\n"
                }
            },
            "type": "object",
            "required": [
                "peerPrivateIp",
                "privateIp",
                "routingPolicyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getConnectionEspCipher:getConnectionEspCipher": {
            "properties": {
                "dhGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman group\n"
                },
                "encryption": {
                    "type": "string",
                    "description": "The encryption algorithm\n"
                },
                "integrity": {
                    "type": "string",
                    "description": "The integrity/hash algorithm\n"
                }
            },
            "type": "object",
            "required": [
                "dhGroup",
                "encryption",
                "integrity"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getConnectionIkev2Cipher:getConnectionIkev2Cipher": {
            "properties": {
                "dhGroup": {
                    "type": "string",
                    "description": "The Diffie-Hellman group\n"
                },
                "encryption": {
                    "type": "string",
                    "description": "The encryption algorithm\n"
                },
                "integrity": {
                    "type": "string",
                    "description": "The integrity/hash algorithm\n"
                }
            },
            "type": "object",
            "required": [
                "dhGroup",
                "encryption",
                "integrity"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:s2svpn/getGatewayPublicConfig:getGatewayPublicConfig": {
            "properties": {
                "ipamIpv4Id": {
                    "type": "string",
                    "description": "The ID of the IPAM IPv4 address to use as the public IP for the VPN gateway\n"
                },
                "ipamIpv6Id": {
                    "type": "string",
                    "description": "The ID of the IPAM IPv6 address to use as the public IP for the VPN gateway\n"
                }
            },
            "type": "object",
            "required": [
                "ipamIpv4Id",
                "ipamIpv6Id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:secrets/SecretEphemeralPolicy:SecretEphemeralPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action to perform when the version of a secret expires. Available values can be found in [SDK constants](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/secret/v1beta1#pkg-constants).\n"
                },
                "expiresOnceAccessed": {
                    "type": "boolean",
                    "description": "True if the secret version expires after a single user access.\n"
                },
                "ttl": {
                    "type": "string",
                    "description": "Time frame, from one second and up to one year, during which the secret's versions are valid. Has to be specified in [Go Duration format](https://pkg.go.dev/time#ParseDuration) (ex: \"30m\", \"24h\").\n"
                }
            },
            "type": "object",
            "required": [
                "action"
            ]
        },
        "scaleway:secrets/SecretVersion:SecretVersion": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of the secret's creation (in RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret (e.g. `my-new-description`).\n"
                },
                "latest": {
                    "type": "boolean",
                    "description": "Returns true if the version is the latest.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The revision of secret version\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The secret ID associated with this version\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the secret.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of the secret's last update (in RFC 3339 format).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "revision",
                        "secretId",
                        "status",
                        "updatedAt"
                    ]
                }
            }
        },
        "scaleway:secrets/getSecretEphemeralPolicy:getSecretEphemeralPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action to perform when the version of a secret expires.\n"
                },
                "expiresOnceAccessed": {
                    "type": "boolean",
                    "description": "True if the secret version expires after a single user access.\n"
                },
                "ttl": {
                    "type": "string",
                    "description": "Time frame, from one second and up to one year, during which the secret's versions are valid. Has to be specified in Go Duration format\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "expiresOnceAccessed",
                "ttl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:secrets/getSecretVersion:getSecretVersion": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of secret version's creation (RFC 3339 format)\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret version\n"
                },
                "latest": {
                    "type": "boolean",
                    "description": "Returns true if the version is the latest.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The revision of secret version\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the secret.\nOnly one 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=\"`secretId`\" pulumi-lang-dotnet=\"`SecretId`\" pulumi-lang-go=\"`secretId`\" pulumi-lang-python=\"`secret_id`\" pulumi-lang-yaml=\"`secretId`\" pulumi-lang-java=\"`secretId`\"\u003e`secretId`\u003c/span\u003e should be specified.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the secret version\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of secret version's creation (RFC 3339 format)\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "latest",
                "revision",
                "secretId",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "scaleway:tem/DomainReputation:DomainReputation": {
            "properties": {
                "previousScore": {
                    "type": "integer",
                    "description": "The previously-calculated domain's reputation score.\n"
                },
                "previousScoredAt": {
                    "type": "string",
                    "description": "The time and date the previous reputation score was calculated.\n"
                },
                "score": {
                    "type": "integer",
                    "description": "A range from 0 to 100 that determines your domain's reputation score.\n"
                },
                "scoredAt": {
                    "type": "string",
                    "description": "The time and date the score was calculated.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the domain's reputation.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "previousScore",
                        "previousScoredAt",
                        "score",
                        "scoredAt",
                        "status"
                    ]
                }
            }
        },
        "scaleway:tem/getDomainReputation:getDomainReputation": {
            "properties": {
                "previousScore": {
                    "type": "integer",
                    "description": "The previously-calculated domain's reputation score\n"
                },
                "previousScoredAt": {
                    "type": "string",
                    "description": "Time and date the previous reputation score was calculated\n"
                },
                "score": {
                    "type": "integer",
                    "description": "A range from 0 to 100 that determines your domain's reputation score\n"
                },
                "scoredAt": {
                    "type": "string",
                    "description": "Time and date the score was calculated\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the domain's reputation\n"
                }
            },
            "type": "object",
            "required": [
                "previousScore",
                "previousScoredAt",
                "score",
                "scoredAt",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        }
    },
    "provider": {
        "description": "The provider type for the scaleway 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": {
            "accessKey": {
                "type": "string",
                "description": "The Scaleway access key."
            },
            "apiUrl": {
                "type": "string",
                "description": "The Scaleway API URL to use."
            },
            "organizationId": {
                "type": "string",
                "description": "The Scaleway organization ID."
            },
            "profile": {
                "type": "string",
                "description": "The Scaleway profile to use."
            },
            "projectId": {
                "type": "string",
                "description": "The Scaleway project ID."
            },
            "region": {
                "type": "string",
                "description": "The region you want to attach the resource to",
                "willReplaceOnChanges": true
            },
            "secretKey": {
                "type": "string",
                "description": "The Scaleway secret Key."
            },
            "zone": {
                "type": "string",
                "description": "The zone you want to attach the resource to",
                "willReplaceOnChanges": true
            }
        },
        "inputProperties": {
            "accessKey": {
                "type": "string",
                "description": "The Scaleway access key.",
                "defaultInfo": {
                    "environment": [
                        "SCW_ACCESS_KEY"
                    ]
                }
            },
            "apiUrl": {
                "type": "string",
                "description": "The Scaleway API URL to use."
            },
            "organizationId": {
                "type": "string",
                "description": "The Scaleway organization ID.",
                "defaultInfo": {
                    "environment": [
                        "SCW_ORGANIZATION_ID"
                    ]
                }
            },
            "profile": {
                "type": "string",
                "description": "The Scaleway profile to use."
            },
            "projectId": {
                "type": "string",
                "description": "The Scaleway project ID.",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_PROJECT_ID"
                    ]
                }
            },
            "region": {
                "type": "string",
                "description": "The region you want to attach the resource to",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_REGION"
                    ]
                },
                "willReplaceOnChanges": true
            },
            "secretKey": {
                "type": "string",
                "description": "The Scaleway secret Key.",
                "defaultInfo": {
                    "environment": [
                        "SCW_SECRET_KEY"
                    ]
                }
            },
            "zone": {
                "type": "string",
                "description": "The zone you want to attach the resource to",
                "defaultInfo": {
                    "environment": [
                        "SCW_DEFAULT_ZONE"
                    ]
                },
                "willReplaceOnChanges": true
            }
        },
        "methods": {
            "terraformConfig": "pulumi:providers:scaleway/terraformConfig"
        }
    },
    "resources": {
        "scaleway:account/project:Project": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.account.Project`\" pulumi-lang-dotnet=\"`scaleway.account.Project`\" pulumi-lang-go=\"`account.Project`\" pulumi-lang-python=\"`account.Project`\" pulumi-lang-yaml=\"`scaleway.account.Project`\" pulumi-lang-java=\"`scaleway.account.Project`\"\u003e`scaleway.account.Project`\u003c/span\u003e resource allows you to create and manage the Projects of a Scaleway Organization.\n\nRefer to the Organizations and Projects [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/) and [API documentation](https://www.scaleway.com/en/developers/api/account/project-api/) for more information.\n\n## Example Usage\n\n### Create a Scaleway Project\n\nThe following command allows you to create a project named \u003cspan pulumi-lang-nodejs=\"`project`\" pulumi-lang-dotnet=\"`Project`\" pulumi-lang-go=\"`project`\" pulumi-lang-python=\"`project`\" pulumi-lang-yaml=\"`project`\" pulumi-lang-java=\"`project`\"\u003e`project`\u003c/span\u003e.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"project\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"project\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"project\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use a project in provider configuration\n\nIf you want to use as default a project created in terraform you can use a temporary provider alias.\nThis project can then be used to configure your default provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"my_project\"});\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"PRO2-XXS\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"my_project\")\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"PRO2-XXS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"my_project\",\n    });\n\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"PRO2-XXS\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"my_project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"PRO2-XXS\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"my_project\")\n            .build());\n\n        var server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"PRO2-XXS\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: my_project\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: PRO2-XXS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjects can be imported using the \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 argument, as shown below:\n\n```sh\n$ pulumi import scaleway:account/project:Project project 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The creation time of the Project.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The last update time of the Project.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Project resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The creation time of the Project.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the Project.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Project.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The last update time of the Project.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/accountProject:AccountProject"
                }
            ]
        },
        "scaleway:account/sshKey:SshKey": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.account.SshKey`\" pulumi-lang-dotnet=\"`scaleway.account.SshKey`\" pulumi-lang-go=\"`account.SshKey`\" pulumi-lang-python=\"`account.SshKey`\" pulumi-lang-yaml=\"`scaleway.account.SshKey`\" pulumi-lang-java=\"`scaleway.account.SshKey`\"\u003e`scaleway.account.SshKey`\u003c/span\u003e resource allows you to create and manage the Projects of a Scaleway Organization.\n\nRefer to the Organizations and Projects [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/) and [API documentation](https://www.scaleway.com/en/developers/api/account/project-api/) for more information.\n\n!\u003e **Important:**  The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.account.SshKey`\" pulumi-lang-dotnet=\"`scaleway.account.SshKey`\" pulumi-lang-go=\"`account.SshKey`\" pulumi-lang-python=\"`account.SshKey`\" pulumi-lang-yaml=\"`scaleway.account.SshKey`\" pulumi-lang-java=\"`scaleway.account.SshKey`\"\u003e`scaleway.account.SshKey`\u003c/span\u003e has been deprecated and will no longer be supported. Instead, use \u003cspan pulumi-lang-nodejs=\"`scaleway.iam.SshKey`\" pulumi-lang-dotnet=\"`scaleway.iam.SshKey`\" pulumi-lang-go=\"`iam.SshKey`\" pulumi-lang-python=\"`iam.SshKey`\" pulumi-lang-yaml=\"`scaleway.iam.SshKey`\" pulumi-lang-java=\"`scaleway.iam.SshKey`\"\u003e`scaleway.iam.SshKey`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.account.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.account.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Account.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewSshKey(ctx, \"main\", \u0026account.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"\u003cYOUR-PUBLIC-SSH-KEY\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.pulumi.scaleway.account.SshKey;\nimport com.pulumi.scaleway.account.SshKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:account:SshKey\n    properties:\n      name: main\n      publicKey: \u003cYOUR-PUBLIC-SSH-KEY\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH keys can be imported using the \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 scaleway:account/sshKey:SshKey main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the iam SSH Key"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the iam SSH key"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the SSH key is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the iam SSH Key"
                }
            },
            "required": [
                "createdAt",
                "fingerprint",
                "name",
                "organizationId",
                "projectId",
                "publicKey",
                "updatedAt"
            ],
            "inputProperties": {
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SshKey resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the iam SSH Key"
                    },
                    "disabled": {
                        "type": "boolean",
                        "description": "The SSH key status"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the iam SSH key"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the SSH key is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public SSH key to be added.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the iam SSH Key"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/accountSshKey:AccountSshKey"
                }
            ]
        },
        "scaleway:applesilicon/runner:Runner": {
            "description": "Creates and manages Scaleway Apple silicon runners.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.applesilicon.Runner(\"main\", {\n    name: \"my-github-runner\",\n    ciProvider: \"github\",\n    url: \"https://github.com/my-org/my-repo\",\n    token: \"my-token\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.applesilicon.Runner(\"main\",\n    name=\"my-github-runner\",\n    ci_provider=\"github\",\n    url=\"https://github.com/my-org/my-repo\",\n    token=\"my-token\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Applesilicon.Runner(\"main\", new()\n    {\n        Name = \"my-github-runner\",\n        CiProvider = \"github\",\n        Url = \"https://github.com/my-org/my-repo\",\n        Token = \"my-token\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := applesilicon.NewRunner(ctx, \"main\", \u0026applesilicon.RunnerArgs{\n\t\t\tName:       pulumi.String(\"my-github-runner\"),\n\t\t\tCiProvider: pulumi.String(\"github\"),\n\t\t\tUrl:        pulumi.String(\"https://github.com/my-org/my-repo\"),\n\t\t\tToken:      pulumi.String(\"my-token\"),\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.scaleway.applesilicon.Runner;\nimport com.pulumi.scaleway.applesilicon.RunnerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Runner(\"main\", RunnerArgs.builder()\n            .name(\"my-github-runner\")\n            .ciProvider(\"github\")\n            .url(\"https://github.com/my-org/my-repo\")\n            .token(\"my-token\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:applesilicon:Runner\n    properties:\n      name: my-github-runner\n      ciProvider: github\n      url: https://github.com/my-org/my-repo\n      token: my-token\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRunner can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:applesilicon/runner:Runner main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "ciProvider": {
                    "type": "string",
                    "description": "The CI/CD provider for the runner. Must be either 'github' or 'gitlab'\n"
                },
                "errorMessage": {
                    "type": "string",
                    "description": "The error message if the runner is in error state\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of labels applied to the runner. Only for github provider\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the runner\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the runner\n"
                },
                "token": {
                    "type": "string",
                    "description": "The token used to authenticate the runner to run\n",
                    "secret": true
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the runner to run\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the runner\n"
                }
            },
            "required": [
                "ciProvider",
                "errorMessage",
                "labels",
                "name",
                "projectId",
                "status",
                "token",
                "url"
            ],
            "inputProperties": {
                "ciProvider": {
                    "type": "string",
                    "description": "The CI/CD provider for the runner. Must be either 'github' or 'gitlab'\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the runner\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to\n",
                    "willReplaceOnChanges": true
                },
                "token": {
                    "type": "string",
                    "description": "The token used to authenticate the runner to run\n",
                    "secret": true
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the runner to run\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the runner\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "ciProvider",
                "token",
                "url"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Runner resources.\n",
                "properties": {
                    "ciProvider": {
                        "type": "string",
                        "description": "The CI/CD provider for the runner. Must be either 'github' or 'gitlab'\n"
                    },
                    "errorMessage": {
                        "type": "string",
                        "description": "The error message if the runner is in error state\n"
                    },
                    "labels": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of labels applied to the runner. Only for github provider\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the runner\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the runner\n"
                    },
                    "token": {
                        "type": "string",
                        "description": "The token used to authenticate the runner to run\n",
                        "secret": true
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL of the runner to run\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone of the runner\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:applesilicon/server:Server": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.applesilicon.Server`\" pulumi-lang-dotnet=\"`scaleway.applesilicon.Server`\" pulumi-lang-go=\"`applesilicon.Server`\" pulumi-lang-python=\"`applesilicon.Server`\" pulumi-lang-yaml=\"`scaleway.applesilicon.Server`\" pulumi-lang-java=\"`scaleway.applesilicon.Server`\"\u003e`scaleway.applesilicon.Server`\u003c/span\u003e resource creates and manages Scaleway Apple silicon servers.\n\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/apple-silicon/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.applesilicon.Server(\"server\", {\n    name: \"test-m1\",\n    type: \"M1-M\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.applesilicon.Server(\"server\",\n    name=\"test-m1\",\n    type=\"M1-M\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Applesilicon.Server(\"server\", new()\n    {\n        Name = \"test-m1\",\n        Type = \"M1-M\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := applesilicon.NewServer(ctx, \"server\", \u0026applesilicon.ServerArgs{\n\t\t\tName: pulumi.String(\"test-m1\"),\n\t\t\tType: pulumi.String(\"M1-M\"),\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.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .name(\"test-m1\")\n            .type(\"M1-M\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:applesilicon:Server\n    properties:\n      name: test-m1\n      type: M1-M\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable VPC and attach private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc_apple_silicon = new scaleway.network.Vpc(\"vpc-apple-silicon\", {name: \"vpc-apple-silicon\"});\nconst pn_apple_silicon = new scaleway.network.PrivateNetwork(\"pn-apple-silicon\", {\n    name: \"pn-apple-silicon\",\n    vpcId: vpc_apple_silicon.id,\n});\nconst my_server = new scaleway.applesilicon.Server(\"my-server\", {\n    name: \"TestAccServerEnableVPC\",\n    type: \"M2-M\",\n    enableVpc: true,\n    privateNetworks: [{\n        id: pn_apple_silicon.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc_apple_silicon = scaleway.network.Vpc(\"vpc-apple-silicon\", name=\"vpc-apple-silicon\")\npn_apple_silicon = scaleway.network.PrivateNetwork(\"pn-apple-silicon\",\n    name=\"pn-apple-silicon\",\n    vpc_id=vpc_apple_silicon.id)\nmy_server = scaleway.applesilicon.Server(\"my-server\",\n    name=\"TestAccServerEnableVPC\",\n    type=\"M2-M\",\n    enable_vpc=True,\n    private_networks=[{\n        \"id\": pn_apple_silicon.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc_apple_silicon = new Scaleway.Network.Vpc(\"vpc-apple-silicon\", new()\n    {\n        Name = \"vpc-apple-silicon\",\n    });\n\n    var pn_apple_silicon = new Scaleway.Network.PrivateNetwork(\"pn-apple-silicon\", new()\n    {\n        Name = \"pn-apple-silicon\",\n        VpcId = vpc_apple_silicon.Id,\n    });\n\n    var my_server = new Scaleway.Applesilicon.Server(\"my-server\", new()\n    {\n        Name = \"TestAccServerEnableVPC\",\n        Type = \"M2-M\",\n        EnableVpc = true,\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Applesilicon.Inputs.ServerPrivateNetworkArgs\n            {\n                Id = pn_apple_silicon.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc_apple_silicon, err := network.NewVpc(ctx, \"vpc-apple-silicon\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"vpc-apple-silicon\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn_apple_silicon, err := network.NewPrivateNetwork(ctx, \"pn-apple-silicon\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:  pulumi.String(\"pn-apple-silicon\"),\n\t\t\tVpcId: vpc_apple_silicon.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applesilicon.NewServer(ctx, \"my-server\", \u0026applesilicon.ServerArgs{\n\t\t\tName:      pulumi.String(\"TestAccServerEnableVPC\"),\n\t\t\tType:      pulumi.String(\"M2-M\"),\n\t\t\tEnableVpc: pulumi.Bool(true),\n\t\t\tPrivateNetworks: applesilicon.ServerPrivateNetworkArray{\n\t\t\t\t\u0026applesilicon.ServerPrivateNetworkArgs{\n\t\t\t\t\tId: pn_apple_silicon.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport com.pulumi.scaleway.applesilicon.inputs.ServerPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc_apple_silicon = new Vpc(\"vpc-apple-silicon\", VpcArgs.builder()\n            .name(\"vpc-apple-silicon\")\n            .build());\n\n        var pn_apple_silicon = new PrivateNetwork(\"pn-apple-silicon\", PrivateNetworkArgs.builder()\n            .name(\"pn-apple-silicon\")\n            .vpcId(vpc_apple_silicon.id())\n            .build());\n\n        var my_server = new Server(\"my-server\", ServerArgs.builder()\n            .name(\"TestAccServerEnableVPC\")\n            .type(\"M2-M\")\n            .enableVpc(true)\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .id(pn_apple_silicon.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc-apple-silicon:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc-apple-silicon\n  pn-apple-silicon:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: pn-apple-silicon\n      vpcId: ${[\"vpc-apple-silicon\"].id}\n  my-server:\n    type: scaleway:applesilicon:Server\n    properties:\n      name: TestAccServerEnableVPC\n      type: M2-M\n      enableVpc: true\n      privateNetworks:\n        - id: ${[\"pn-apple-silicon\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e runner\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst byName = scaleway.applesilicon.getOs({\n    name: \"devos-sequoia-15.6\",\n});\nconst main = new scaleway.applesilicon.Runner(\"main\", {\n    name: \"TestAccRunnerGithub\",\n    ciProvider: \"github\",\n    url: \"https://github.com/my-repo-url\",\n    token: \"MY_GITHUB_RUNNER_TOKEN\",\n});\nconst mainServer = new scaleway.applesilicon.Server(\"main\", {\n    name: \"TestAccServerRunner\",\n    type: \"M2-L\",\n    publicBandwidth: 1000000000,\n    osId: byName.then(byName =\u003e byName.id),\n    runnerIds: [main.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nby_name = scaleway.applesilicon.get_os(name=\"devos-sequoia-15.6\")\nmain = scaleway.applesilicon.Runner(\"main\",\n    name=\"TestAccRunnerGithub\",\n    ci_provider=\"github\",\n    url=\"https://github.com/my-repo-url\",\n    token=\"MY_GITHUB_RUNNER_TOKEN\")\nmain_server = scaleway.applesilicon.Server(\"main\",\n    name=\"TestAccServerRunner\",\n    type=\"M2-L\",\n    public_bandwidth=1000000000,\n    os_id=by_name.id,\n    runner_ids=[main.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byName = Scaleway.Applesilicon.GetOs.Invoke(new()\n    {\n        Name = \"devos-sequoia-15.6\",\n    });\n\n    var main = new Scaleway.Applesilicon.Runner(\"main\", new()\n    {\n        Name = \"TestAccRunnerGithub\",\n        CiProvider = \"github\",\n        Url = \"https://github.com/my-repo-url\",\n        Token = \"MY_GITHUB_RUNNER_TOKEN\",\n    });\n\n    var mainServer = new Scaleway.Applesilicon.Server(\"main\", new()\n    {\n        Name = \"TestAccServerRunner\",\n        Type = \"M2-L\",\n        PublicBandwidth = 1000000000,\n        OsId = byName.Apply(getOsResult =\u003e getOsResult.Id),\n        RunnerIds = new[]\n        {\n            main.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbyName, err := applesilicon.GetOs(ctx, \u0026applesilicon.GetOsArgs{\n\t\t\tName: pulumi.StringRef(\"devos-sequoia-15.6\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := applesilicon.NewRunner(ctx, \"main\", \u0026applesilicon.RunnerArgs{\n\t\t\tName:       pulumi.String(\"TestAccRunnerGithub\"),\n\t\t\tCiProvider: pulumi.String(\"github\"),\n\t\t\tUrl:        pulumi.String(\"https://github.com/my-repo-url\"),\n\t\t\tToken:      pulumi.String(\"MY_GITHUB_RUNNER_TOKEN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applesilicon.NewServer(ctx, \"main\", \u0026applesilicon.ServerArgs{\n\t\t\tName:            pulumi.String(\"TestAccServerRunner\"),\n\t\t\tType:            pulumi.String(\"M2-L\"),\n\t\t\tPublicBandwidth: pulumi.Int(1000000000),\n\t\t\tOsId:            pulumi.String(pulumi.String(byName.Id)),\n\t\t\tRunnerIds: pulumi.StringArray{\n\t\t\t\tmain.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.scaleway.applesilicon.ApplesiliconFunctions;\nimport com.pulumi.scaleway.applesilicon.inputs.GetOsArgs;\nimport com.pulumi.scaleway.applesilicon.Runner;\nimport com.pulumi.scaleway.applesilicon.RunnerArgs;\nimport com.pulumi.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 byName = ApplesiliconFunctions.getOs(GetOsArgs.builder()\n            .name(\"devos-sequoia-15.6\")\n            .build());\n\n        var main = new Runner(\"main\", RunnerArgs.builder()\n            .name(\"TestAccRunnerGithub\")\n            .ciProvider(\"github\")\n            .url(\"https://github.com/my-repo-url\")\n            .token(\"MY_GITHUB_RUNNER_TOKEN\")\n            .build());\n\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .name(\"TestAccServerRunner\")\n            .type(\"M2-L\")\n            .publicBandwidth(1000000000)\n            .osId(byName.id())\n            .runnerIds(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:applesilicon:Runner\n    properties:\n      name: TestAccRunnerGithub\n      ciProvider: github\n      url: https://github.com/my-repo-url\n      token: MY_GITHUB_RUNNER_TOKEN\n  mainServer:\n    type: scaleway:applesilicon:Server\n    name: main\n    properties:\n      name: TestAccServerRunner\n      type: M2-L\n      publicBandwidth: 1e+09\n      osId: ${byName.id}\n      runnerIds:\n        - ${main.id}\nvariables:\n  byName:\n    fn::invoke:\n      function: scaleway:applesilicon:getOs\n      arguments:\n        name: devos-sequoia-15.6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:applesilicon/server:Server main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "commitment": {
                    "type": "string",
                    "description": "The commitment period of the server"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the private network was created.\n"
                },
                "deletableAt": {
                    "type": "string",
                    "description": "The minimal date and time on which you can delete this server due to Apple licence"
                },
                "enableVpc": {
                    "type": "boolean",
                    "description": ": Enables the VPC option when set to true.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the server (IPv4 address).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "osId": {
                    "type": "string",
                    "description": "The ID of the OS to use for the server.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password of the server",
                    "secret": true
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:applesilicon/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:applesilicon/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n"
                },
                "publicBandwidth": {
                    "type": "integer",
                    "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                },
                "runnerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the private network was last updated.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the server"
                },
                "vncUrl": {
                    "type": "string",
                    "description": "URL of the VNC.\n"
                },
                "vpcStatus": {
                    "type": "string",
                    "description": "The current status of the VPC option.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "deletableAt",
                "ip",
                "name",
                "organizationId",
                "password",
                "privateIps",
                "projectId",
                "publicBandwidth",
                "runnerIds",
                "state",
                "type",
                "updatedAt",
                "username",
                "vncUrl",
                "vpcStatus"
            ],
            "inputProperties": {
                "commitment": {
                    "type": "string",
                    "description": "The commitment period of the server"
                },
                "enableVpc": {
                    "type": "boolean",
                    "description": ": Enables the VPC option when set to true.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "osId": {
                    "type": "string",
                    "description": "The ID of the OS to use for the server.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:applesilicon/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:applesilicon/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicBandwidth": {
                    "type": "integer",
                    "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                },
                "runnerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Server resources.\n",
                "properties": {
                    "commitment": {
                        "type": "string",
                        "description": "The commitment period of the server"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the private network was created.\n"
                    },
                    "deletableAt": {
                        "type": "string",
                        "description": "The minimal date and time on which you can delete this server due to Apple licence"
                    },
                    "enableVpc": {
                        "type": "boolean",
                        "description": ": Enables the VPC option when set to true.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "IPv4 address of the server (IPv4 address).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "osId": {
                        "type": "string",
                        "description": "The ID of the OS to use for the server.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "The password of the server",
                        "secret": true
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:applesilicon/ServerPrivateIp:ServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:applesilicon/ServerPrivateNetwork:ServerPrivateNetwork"
                        },
                        "description": "The private networks to attach to the server\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicBandwidth": {
                        "type": "integer",
                        "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                    },
                    "runnerIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the server.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the private network was last updated.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The username of the server"
                    },
                    "vncUrl": {
                        "type": "string",
                        "description": "URL of the VNC.\n"
                    },
                    "vpcStatus": {
                        "type": "string",
                        "description": "The current status of the VPC option.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/appleSiliconServer:AppleSiliconServer"
                }
            ]
        },
        "scaleway:autoscaling/instanceGroup:InstanceGroup": {
            "description": "Books and manages Autoscaling Instance groups.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.autoscaling.InstanceGroup(\"main\", {\n    name: \"asg-group\",\n    templateId: mainScalewayAutoscalingInstanceTemplate.id,\n    tags: [\n        \"terraform-test\",\n        \"instance-group\",\n    ],\n    capacities: [{\n        maxReplicas: 5,\n        minReplicas: 1,\n        cooldownDelay: 300,\n    }],\n    loadBalancers: [{\n        id: mainScalewayLb.id,\n        backendIds: [mainScalewayLbBackend.id],\n        privateNetworkId: mainScalewayVpcPrivateNetwork.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.autoscaling.InstanceGroup(\"main\",\n    name=\"asg-group\",\n    template_id=main_scaleway_autoscaling_instance_template[\"id\"],\n    tags=[\n        \"terraform-test\",\n        \"instance-group\",\n    ],\n    capacities=[{\n        \"max_replicas\": 5,\n        \"min_replicas\": 1,\n        \"cooldown_delay\": 300,\n    }],\n    load_balancers=[{\n        \"id\": main_scaleway_lb[\"id\"],\n        \"backend_ids\": [main_scaleway_lb_backend[\"id\"]],\n        \"private_network_id\": main_scaleway_vpc_private_network[\"id\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Autoscaling.InstanceGroup(\"main\", new()\n    {\n        Name = \"asg-group\",\n        TemplateId = mainScalewayAutoscalingInstanceTemplate.Id,\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"instance-group\",\n        },\n        Capacities = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceGroupCapacityArgs\n            {\n                MaxReplicas = 5,\n                MinReplicas = 1,\n                CooldownDelay = 300,\n            },\n        },\n        LoadBalancers = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceGroupLoadBalancerArgs\n            {\n                Id = mainScalewayLb.Id,\n                BackendIds = new[]\n                {\n                    mainScalewayLbBackend.Id,\n                },\n                PrivateNetworkId = mainScalewayVpcPrivateNetwork.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/autoscaling\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.NewInstanceGroup(ctx, \"main\", \u0026autoscaling.InstanceGroupArgs{\n\t\t\tName:       pulumi.String(\"asg-group\"),\n\t\t\tTemplateId: pulumi.Any(mainScalewayAutoscalingInstanceTemplate.Id),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"instance-group\"),\n\t\t\t},\n\t\t\tCapacities: autoscaling.InstanceGroupCapacityArray{\n\t\t\t\t\u0026autoscaling.InstanceGroupCapacityArgs{\n\t\t\t\t\tMaxReplicas:   pulumi.Int(5),\n\t\t\t\t\tMinReplicas:   pulumi.Int(1),\n\t\t\t\t\tCooldownDelay: pulumi.Int(300),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancers: autoscaling.InstanceGroupLoadBalancerArray{\n\t\t\t\t\u0026autoscaling.InstanceGroupLoadBalancerArgs{\n\t\t\t\t\tId: pulumi.Any(mainScalewayLb.Id),\n\t\t\t\t\tBackendIds: pulumi.StringArray{\n\t\t\t\t\t\tmainScalewayLbBackend.Id,\n\t\t\t\t\t},\n\t\t\t\t\tPrivateNetworkId: pulumi.Any(mainScalewayVpcPrivateNetwork.Id),\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.scaleway.autoscaling.InstanceGroup;\nimport com.pulumi.scaleway.autoscaling.InstanceGroupArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceGroupCapacityArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceGroupLoadBalancerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new InstanceGroup(\"main\", InstanceGroupArgs.builder()\n            .name(\"asg-group\")\n            .templateId(mainScalewayAutoscalingInstanceTemplate.id())\n            .tags(            \n                \"terraform-test\",\n                \"instance-group\")\n            .capacities(InstanceGroupCapacityArgs.builder()\n                .maxReplicas(5)\n                .minReplicas(1)\n                .cooldownDelay(300)\n                .build())\n            .loadBalancers(InstanceGroupLoadBalancerArgs.builder()\n                .id(mainScalewayLb.id())\n                .backendIds(mainScalewayLbBackend.id())\n                .privateNetworkId(mainScalewayVpcPrivateNetwork.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:autoscaling:InstanceGroup\n    properties:\n      name: asg-group\n      templateId: ${mainScalewayAutoscalingInstanceTemplate.id}\n      tags:\n        - terraform-test\n        - instance-group\n      capacities:\n        - maxReplicas: 5\n          minReplicas: 1\n          cooldownDelay: '300'\n      loadBalancers:\n        - id: ${mainScalewayLb.id}\n          backendIds:\n            - ${mainScalewayLbBackend.id}\n          privateNetworkId: ${mainScalewayVpcPrivateNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With template and policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.Vpc(\"main\", {name: \"TestAccAutoscalingVPC\"});\nconst mainPrivateNetwork = new scaleway.network.PrivateNetwork(\"main\", {\n    name: \"TestAccAutoscalingVPC\",\n    vpcId: main.id,\n});\nconst mainVolume = new scaleway.block.Volume(\"main\", {\n    iops: 5000,\n    sizeInGb: 10,\n});\nconst mainSnapshot = new scaleway.block.Snapshot(\"main\", {\n    name: \"test-ds-block-snapshot-basic\",\n    volumeId: mainVolume.id,\n});\nconst mainIp = new scaleway.loadbalancers.Ip(\"main\", {});\nconst mainLoadBalancer = new scaleway.loadbalancers.LoadBalancer(\"main\", {\n    ipId: mainIp.id,\n    name: \"test-lb\",\n    type: \"lb-s\",\n    privateNetworks: [{\n        privateNetworkId: mainPrivateNetwork.id,\n    }],\n});\nconst mainBackend = new scaleway.loadbalancers.Backend(\"main\", {\n    lbId: mainLoadBalancer.id,\n    forwardProtocol: \"tcp\",\n    forwardPort: 80,\n    proxyProtocol: \"none\",\n});\nconst mainInstanceTemplate = new scaleway.autoscaling.InstanceTemplate(\"main\", {\n    name: \"autoscaling-instance-template-basic\",\n    commercialType: \"PLAY2-MICRO\",\n    tags: [\n        \"terraform-test\",\n        \"basic\",\n    ],\n    volumes: [{\n        name: \"as-volume\",\n        volumeType: \"sbs\",\n        boot: true,\n        fromSnapshot: {\n            snapshotId: mainSnapshot.id,\n        },\n        perfIops: 5000,\n    }],\n    publicIpsV4Count: 1,\n    privateNetworkIds: [mainPrivateNetwork.id],\n});\nconst mainInstanceGroup = new scaleway.autoscaling.InstanceGroup(\"main\", {\n    name: \"autoscaling-instance-group-basic\",\n    templateId: mainInstanceTemplate.id,\n    tags: [\n        \"terraform-test\",\n        \"instance-group\",\n    ],\n    capacities: [{\n        maxReplicas: 5,\n        minReplicas: 1,\n        cooldownDelay: 300,\n    }],\n    loadBalancers: [{\n        id: mainLoadBalancer.id,\n        backendIds: [mainBackend.id],\n        privateNetworkId: mainPrivateNetwork.id,\n    }],\n    deleteServersOnDestroy: true,\n});\nconst up = new scaleway.autoscaling.InstancePolicy(\"up\", {\n    instanceGroupId: mainInstanceGroup.id,\n    name: \"scale-up-if-cpu-high\",\n    action: \"scale_up\",\n    type: \"flat_count\",\n    value: 1,\n    priority: 1,\n    metrics: [{\n        name: \"cpu scale up\",\n        managedMetric: \"managed_metric_instance_cpu\",\n        operator: \"operator_greater_than\",\n        aggregate: \"aggregate_average\",\n        samplingRangeMin: 5,\n        threshold: 70,\n    }],\n});\nconst down = new scaleway.autoscaling.InstancePolicy(\"down\", {\n    instanceGroupId: mainInstanceGroup.id,\n    name: \"scale-down-if-cpu-low\",\n    action: \"scale_down\",\n    type: \"flat_count\",\n    value: 1,\n    priority: 2,\n    metrics: [{\n        name: \"cpu scale down\",\n        managedMetric: \"managed_metric_instance_cpu\",\n        operator: \"operator_less_than\",\n        aggregate: \"aggregate_average\",\n        samplingRangeMin: 5,\n        threshold: 40,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.Vpc(\"main\", name=\"TestAccAutoscalingVPC\")\nmain_private_network = scaleway.network.PrivateNetwork(\"main\",\n    name=\"TestAccAutoscalingVPC\",\n    vpc_id=main.id)\nmain_volume = scaleway.block.Volume(\"main\",\n    iops=5000,\n    size_in_gb=10)\nmain_snapshot = scaleway.block.Snapshot(\"main\",\n    name=\"test-ds-block-snapshot-basic\",\n    volume_id=main_volume.id)\nmain_ip = scaleway.loadbalancers.Ip(\"main\")\nmain_load_balancer = scaleway.loadbalancers.LoadBalancer(\"main\",\n    ip_id=main_ip.id,\n    name=\"test-lb\",\n    type=\"lb-s\",\n    private_networks=[{\n        \"private_network_id\": main_private_network.id,\n    }])\nmain_backend = scaleway.loadbalancers.Backend(\"main\",\n    lb_id=main_load_balancer.id,\n    forward_protocol=\"tcp\",\n    forward_port=80,\n    proxy_protocol=\"none\")\nmain_instance_template = scaleway.autoscaling.InstanceTemplate(\"main\",\n    name=\"autoscaling-instance-template-basic\",\n    commercial_type=\"PLAY2-MICRO\",\n    tags=[\n        \"terraform-test\",\n        \"basic\",\n    ],\n    volumes=[{\n        \"name\": \"as-volume\",\n        \"volume_type\": \"sbs\",\n        \"boot\": True,\n        \"from_snapshot\": {\n            \"snapshot_id\": main_snapshot.id,\n        },\n        \"perf_iops\": 5000,\n    }],\n    public_ips_v4_count=1,\n    private_network_ids=[main_private_network.id])\nmain_instance_group = scaleway.autoscaling.InstanceGroup(\"main\",\n    name=\"autoscaling-instance-group-basic\",\n    template_id=main_instance_template.id,\n    tags=[\n        \"terraform-test\",\n        \"instance-group\",\n    ],\n    capacities=[{\n        \"max_replicas\": 5,\n        \"min_replicas\": 1,\n        \"cooldown_delay\": 300,\n    }],\n    load_balancers=[{\n        \"id\": main_load_balancer.id,\n        \"backend_ids\": [main_backend.id],\n        \"private_network_id\": main_private_network.id,\n    }],\n    delete_servers_on_destroy=True)\nup = scaleway.autoscaling.InstancePolicy(\"up\",\n    instance_group_id=main_instance_group.id,\n    name=\"scale-up-if-cpu-high\",\n    action=\"scale_up\",\n    type=\"flat_count\",\n    value=1,\n    priority=1,\n    metrics=[{\n        \"name\": \"cpu scale up\",\n        \"managed_metric\": \"managed_metric_instance_cpu\",\n        \"operator\": \"operator_greater_than\",\n        \"aggregate\": \"aggregate_average\",\n        \"sampling_range_min\": 5,\n        \"threshold\": 70,\n    }])\ndown = scaleway.autoscaling.InstancePolicy(\"down\",\n    instance_group_id=main_instance_group.id,\n    name=\"scale-down-if-cpu-low\",\n    action=\"scale_down\",\n    type=\"flat_count\",\n    value=1,\n    priority=2,\n    metrics=[{\n        \"name\": \"cpu scale down\",\n        \"managed_metric\": \"managed_metric_instance_cpu\",\n        \"operator\": \"operator_less_than\",\n        \"aggregate\": \"aggregate_average\",\n        \"sampling_range_min\": 5,\n        \"threshold\": 40,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.Vpc(\"main\", new()\n    {\n        Name = \"TestAccAutoscalingVPC\",\n    });\n\n    var mainPrivateNetwork = new Scaleway.Network.PrivateNetwork(\"main\", new()\n    {\n        Name = \"TestAccAutoscalingVPC\",\n        VpcId = main.Id,\n    });\n\n    var mainVolume = new Scaleway.Block.Volume(\"main\", new()\n    {\n        Iops = 5000,\n        SizeInGb = 10,\n    });\n\n    var mainSnapshot = new Scaleway.Block.Snapshot(\"main\", new()\n    {\n        Name = \"test-ds-block-snapshot-basic\",\n        VolumeId = mainVolume.Id,\n    });\n\n    var mainIp = new Scaleway.Loadbalancers.Ip(\"main\");\n\n    var mainLoadBalancer = new Scaleway.Loadbalancers.LoadBalancer(\"main\", new()\n    {\n        IpId = mainIp.Id,\n        Name = \"test-lb\",\n        Type = \"lb-s\",\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Loadbalancers.Inputs.LoadBalancerPrivateNetworkArgs\n            {\n                PrivateNetworkId = mainPrivateNetwork.Id,\n            },\n        },\n    });\n\n    var mainBackend = new Scaleway.Loadbalancers.Backend(\"main\", new()\n    {\n        LbId = mainLoadBalancer.Id,\n        ForwardProtocol = \"tcp\",\n        ForwardPort = 80,\n        ProxyProtocol = \"none\",\n    });\n\n    var mainInstanceTemplate = new Scaleway.Autoscaling.InstanceTemplate(\"main\", new()\n    {\n        Name = \"autoscaling-instance-template-basic\",\n        CommercialType = \"PLAY2-MICRO\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"basic\",\n        },\n        Volumes = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceTemplateVolumeArgs\n            {\n                Name = \"as-volume\",\n                VolumeType = \"sbs\",\n                Boot = true,\n                FromSnapshot = new Scaleway.Autoscaling.Inputs.InstanceTemplateVolumeFromSnapshotArgs\n                {\n                    SnapshotId = mainSnapshot.Id,\n                },\n                PerfIops = 5000,\n            },\n        },\n        PublicIpsV4Count = 1,\n        PrivateNetworkIds = new[]\n        {\n            mainPrivateNetwork.Id,\n        },\n    });\n\n    var mainInstanceGroup = new Scaleway.Autoscaling.InstanceGroup(\"main\", new()\n    {\n        Name = \"autoscaling-instance-group-basic\",\n        TemplateId = mainInstanceTemplate.Id,\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"instance-group\",\n        },\n        Capacities = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceGroupCapacityArgs\n            {\n                MaxReplicas = 5,\n                MinReplicas = 1,\n                CooldownDelay = 300,\n            },\n        },\n        LoadBalancers = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceGroupLoadBalancerArgs\n            {\n                Id = mainLoadBalancer.Id,\n                BackendIds = new[]\n                {\n                    mainBackend.Id,\n                },\n                PrivateNetworkId = mainPrivateNetwork.Id,\n            },\n        },\n        DeleteServersOnDestroy = true,\n    });\n\n    var up = new Scaleway.Autoscaling.InstancePolicy(\"up\", new()\n    {\n        InstanceGroupId = mainInstanceGroup.Id,\n        Name = \"scale-up-if-cpu-high\",\n        Action = \"scale_up\",\n        Type = \"flat_count\",\n        Value = 1,\n        Priority = 1,\n        Metrics = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstancePolicyMetricArgs\n            {\n                Name = \"cpu scale up\",\n                ManagedMetric = \"managed_metric_instance_cpu\",\n                Operator = \"operator_greater_than\",\n                Aggregate = \"aggregate_average\",\n                SamplingRangeMin = 5,\n                Threshold = 70,\n            },\n        },\n    });\n\n    var down = new Scaleway.Autoscaling.InstancePolicy(\"down\", new()\n    {\n        InstanceGroupId = mainInstanceGroup.Id,\n        Name = \"scale-down-if-cpu-low\",\n        Action = \"scale_down\",\n        Type = \"flat_count\",\n        Value = 1,\n        Priority = 2,\n        Metrics = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstancePolicyMetricArgs\n            {\n                Name = \"cpu scale down\",\n                ManagedMetric = \"managed_metric_instance_cpu\",\n                Operator = \"operator_less_than\",\n                Aggregate = \"aggregate_average\",\n                SamplingRangeMin = 5,\n                Threshold = 40,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/autoscaling\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := network.NewVpc(ctx, \"main\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"TestAccAutoscalingVPC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPrivateNetwork, err := network.NewPrivateNetwork(ctx, \"main\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:  pulumi.String(\"TestAccAutoscalingVPC\"),\n\t\t\tVpcId: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainVolume, err := block.NewVolume(ctx, \"main\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainSnapshot, err := block.NewSnapshot(ctx, \"main\", \u0026block.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"test-ds-block-snapshot-basic\"),\n\t\t\tVolumeId: mainVolume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainIp, err := loadbalancers.NewIp(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainLoadBalancer, err := loadbalancers.NewLoadBalancer(ctx, \"main\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpId: mainIp.ID(),\n\t\t\tName: pulumi.String(\"test-lb\"),\n\t\t\tType: pulumi.String(\"lb-s\"),\n\t\t\tPrivateNetworks: loadbalancers.LoadBalancerPrivateNetworkArray{\n\t\t\t\t\u0026loadbalancers.LoadBalancerPrivateNetworkArgs{\n\t\t\t\t\tPrivateNetworkId: mainPrivateNetwork.ID(),\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\tmainBackend, err := loadbalancers.NewBackend(ctx, \"main\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            mainLoadBalancer.ID(),\n\t\t\tForwardProtocol: pulumi.String(\"tcp\"),\n\t\t\tForwardPort:     pulumi.Int(80),\n\t\t\tProxyProtocol:   pulumi.String(\"none\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceTemplate, err := autoscaling.NewInstanceTemplate(ctx, \"main\", \u0026autoscaling.InstanceTemplateArgs{\n\t\t\tName:           pulumi.String(\"autoscaling-instance-template-basic\"),\n\t\t\tCommercialType: pulumi.String(\"PLAY2-MICRO\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"basic\"),\n\t\t\t},\n\t\t\tVolumes: autoscaling.InstanceTemplateVolumeArray{\n\t\t\t\t\u0026autoscaling.InstanceTemplateVolumeArgs{\n\t\t\t\t\tName:       pulumi.String(\"as-volume\"),\n\t\t\t\t\tVolumeType: pulumi.String(\"sbs\"),\n\t\t\t\t\tBoot:       pulumi.Bool(true),\n\t\t\t\t\tFromSnapshot: \u0026autoscaling.InstanceTemplateVolumeFromSnapshotArgs{\n\t\t\t\t\t\tSnapshotId: mainSnapshot.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPerfIops: pulumi.Int(5000),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPublicIpsV4Count: pulumi.Int(1),\n\t\t\tPrivateNetworkIds: pulumi.StringArray{\n\t\t\t\tmainPrivateNetwork.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainInstanceGroup, err := autoscaling.NewInstanceGroup(ctx, \"main\", \u0026autoscaling.InstanceGroupArgs{\n\t\t\tName:       pulumi.String(\"autoscaling-instance-group-basic\"),\n\t\t\tTemplateId: mainInstanceTemplate.ID(),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"instance-group\"),\n\t\t\t},\n\t\t\tCapacities: autoscaling.InstanceGroupCapacityArray{\n\t\t\t\t\u0026autoscaling.InstanceGroupCapacityArgs{\n\t\t\t\t\tMaxReplicas:   pulumi.Int(5),\n\t\t\t\t\tMinReplicas:   pulumi.Int(1),\n\t\t\t\t\tCooldownDelay: pulumi.Int(300),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancers: autoscaling.InstanceGroupLoadBalancerArray{\n\t\t\t\t\u0026autoscaling.InstanceGroupLoadBalancerArgs{\n\t\t\t\t\tId: mainLoadBalancer.ID(),\n\t\t\t\t\tBackendIds: pulumi.StringArray{\n\t\t\t\t\t\tmainBackend.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPrivateNetworkId: mainPrivateNetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServersOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = autoscaling.NewInstancePolicy(ctx, \"up\", \u0026autoscaling.InstancePolicyArgs{\n\t\t\tInstanceGroupId: mainInstanceGroup.ID(),\n\t\t\tName:            pulumi.String(\"scale-up-if-cpu-high\"),\n\t\t\tAction:          pulumi.String(\"scale_up\"),\n\t\t\tType:            pulumi.String(\"flat_count\"),\n\t\t\tValue:           pulumi.Int(1),\n\t\t\tPriority:        pulumi.Int(1),\n\t\t\tMetrics: autoscaling.InstancePolicyMetricArray{\n\t\t\t\t\u0026autoscaling.InstancePolicyMetricArgs{\n\t\t\t\t\tName:             pulumi.String(\"cpu scale up\"),\n\t\t\t\t\tManagedMetric:    pulumi.String(\"managed_metric_instance_cpu\"),\n\t\t\t\t\tOperator:         pulumi.String(\"operator_greater_than\"),\n\t\t\t\t\tAggregate:        pulumi.String(\"aggregate_average\"),\n\t\t\t\t\tSamplingRangeMin: pulumi.Int(5),\n\t\t\t\t\tThreshold:        pulumi.Int(70),\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 = autoscaling.NewInstancePolicy(ctx, \"down\", \u0026autoscaling.InstancePolicyArgs{\n\t\t\tInstanceGroupId: mainInstanceGroup.ID(),\n\t\t\tName:            pulumi.String(\"scale-down-if-cpu-low\"),\n\t\t\tAction:          pulumi.String(\"scale_down\"),\n\t\t\tType:            pulumi.String(\"flat_count\"),\n\t\t\tValue:           pulumi.Int(1),\n\t\t\tPriority:        pulumi.Int(2),\n\t\t\tMetrics: autoscaling.InstancePolicyMetricArray{\n\t\t\t\t\u0026autoscaling.InstancePolicyMetricArgs{\n\t\t\t\t\tName:             pulumi.String(\"cpu scale down\"),\n\t\t\t\t\tManagedMetric:    pulumi.String(\"managed_metric_instance_cpu\"),\n\t\t\t\t\tOperator:         pulumi.String(\"operator_less_than\"),\n\t\t\t\t\tAggregate:        pulumi.String(\"aggregate_average\"),\n\t\t\t\t\tSamplingRangeMin: pulumi.Int(5),\n\t\t\t\t\tThreshold:        pulumi.Int(40),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.block.Snapshot;\nimport com.pulumi.scaleway.block.SnapshotArgs;\nimport com.pulumi.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.LoadBalancerPrivateNetworkArgs;\nimport com.pulumi.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport com.pulumi.scaleway.autoscaling.InstanceTemplate;\nimport com.pulumi.scaleway.autoscaling.InstanceTemplateArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceTemplateVolumeArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceTemplateVolumeFromSnapshotArgs;\nimport com.pulumi.scaleway.autoscaling.InstanceGroup;\nimport com.pulumi.scaleway.autoscaling.InstanceGroupArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceGroupCapacityArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceGroupLoadBalancerArgs;\nimport com.pulumi.scaleway.autoscaling.InstancePolicy;\nimport com.pulumi.scaleway.autoscaling.InstancePolicyArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstancePolicyMetricArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Vpc(\"main\", VpcArgs.builder()\n            .name(\"TestAccAutoscalingVPC\")\n            .build());\n\n        var mainPrivateNetwork = new PrivateNetwork(\"mainPrivateNetwork\", PrivateNetworkArgs.builder()\n            .name(\"TestAccAutoscalingVPC\")\n            .vpcId(main.id())\n            .build());\n\n        var mainVolume = new Volume(\"mainVolume\", VolumeArgs.builder()\n            .iops(5000)\n            .sizeInGb(10)\n            .build());\n\n        var mainSnapshot = new Snapshot(\"mainSnapshot\", SnapshotArgs.builder()\n            .name(\"test-ds-block-snapshot-basic\")\n            .volumeId(mainVolume.id())\n            .build());\n\n        var mainIp = new Ip(\"mainIp\");\n\n        var mainLoadBalancer = new LoadBalancer(\"mainLoadBalancer\", LoadBalancerArgs.builder()\n            .ipId(mainIp.id())\n            .name(\"test-lb\")\n            .type(\"lb-s\")\n            .privateNetworks(LoadBalancerPrivateNetworkArgs.builder()\n                .privateNetworkId(mainPrivateNetwork.id())\n                .build())\n            .build());\n\n        var mainBackend = new Backend(\"mainBackend\", BackendArgs.builder()\n            .lbId(mainLoadBalancer.id())\n            .forwardProtocol(\"tcp\")\n            .forwardPort(80)\n            .proxyProtocol(\"none\")\n            .build());\n\n        var mainInstanceTemplate = new InstanceTemplate(\"mainInstanceTemplate\", InstanceTemplateArgs.builder()\n            .name(\"autoscaling-instance-template-basic\")\n            .commercialType(\"PLAY2-MICRO\")\n            .tags(            \n                \"terraform-test\",\n                \"basic\")\n            .volumes(InstanceTemplateVolumeArgs.builder()\n                .name(\"as-volume\")\n                .volumeType(\"sbs\")\n                .boot(true)\n                .fromSnapshot(InstanceTemplateVolumeFromSnapshotArgs.builder()\n                    .snapshotId(mainSnapshot.id())\n                    .build())\n                .perfIops(5000)\n                .build())\n            .publicIpsV4Count(1)\n            .privateNetworkIds(mainPrivateNetwork.id())\n            .build());\n\n        var mainInstanceGroup = new InstanceGroup(\"mainInstanceGroup\", InstanceGroupArgs.builder()\n            .name(\"autoscaling-instance-group-basic\")\n            .templateId(mainInstanceTemplate.id())\n            .tags(            \n                \"terraform-test\",\n                \"instance-group\")\n            .capacities(InstanceGroupCapacityArgs.builder()\n                .maxReplicas(5)\n                .minReplicas(1)\n                .cooldownDelay(300)\n                .build())\n            .loadBalancers(InstanceGroupLoadBalancerArgs.builder()\n                .id(mainLoadBalancer.id())\n                .backendIds(mainBackend.id())\n                .privateNetworkId(mainPrivateNetwork.id())\n                .build())\n            .deleteServersOnDestroy(true)\n            .build());\n\n        var up = new InstancePolicy(\"up\", InstancePolicyArgs.builder()\n            .instanceGroupId(mainInstanceGroup.id())\n            .name(\"scale-up-if-cpu-high\")\n            .action(\"scale_up\")\n            .type(\"flat_count\")\n            .value(1)\n            .priority(1)\n            .metrics(InstancePolicyMetricArgs.builder()\n                .name(\"cpu scale up\")\n                .managedMetric(\"managed_metric_instance_cpu\")\n                .operator(\"operator_greater_than\")\n                .aggregate(\"aggregate_average\")\n                .samplingRangeMin(5)\n                .threshold(70)\n                .build())\n            .build());\n\n        var down = new InstancePolicy(\"down\", InstancePolicyArgs.builder()\n            .instanceGroupId(mainInstanceGroup.id())\n            .name(\"scale-down-if-cpu-low\")\n            .action(\"scale_down\")\n            .type(\"flat_count\")\n            .value(1)\n            .priority(2)\n            .metrics(InstancePolicyMetricArgs.builder()\n                .name(\"cpu scale down\")\n                .managedMetric(\"managed_metric_instance_cpu\")\n                .operator(\"operator_less_than\")\n                .aggregate(\"aggregate_average\")\n                .samplingRangeMin(5)\n                .threshold(40)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:Vpc\n    properties:\n      name: TestAccAutoscalingVPC\n  mainPrivateNetwork:\n    type: scaleway:network:PrivateNetwork\n    name: main\n    properties:\n      name: TestAccAutoscalingVPC\n      vpcId: ${main.id}\n  mainVolume:\n    type: scaleway:block:Volume\n    name: main\n    properties:\n      iops: 5000\n      sizeInGb: 10\n  mainSnapshot:\n    type: scaleway:block:Snapshot\n    name: main\n    properties:\n      name: test-ds-block-snapshot-basic\n      volumeId: ${mainVolume.id}\n  mainIp:\n    type: scaleway:loadbalancers:Ip\n    name: main\n  mainLoadBalancer:\n    type: scaleway:loadbalancers:LoadBalancer\n    name: main\n    properties:\n      ipId: ${mainIp.id}\n      name: test-lb\n      type: lb-s\n      privateNetworks:\n        - privateNetworkId: ${mainPrivateNetwork.id}\n  mainBackend:\n    type: scaleway:loadbalancers:Backend\n    name: main\n    properties:\n      lbId: ${mainLoadBalancer.id}\n      forwardProtocol: tcp\n      forwardPort: 80\n      proxyProtocol: none\n  mainInstanceTemplate:\n    type: scaleway:autoscaling:InstanceTemplate\n    name: main\n    properties:\n      name: autoscaling-instance-template-basic\n      commercialType: PLAY2-MICRO\n      tags:\n        - terraform-test\n        - basic\n      volumes:\n        - name: as-volume\n          volumeType: sbs\n          boot: true\n          fromSnapshot:\n            snapshotId: ${mainSnapshot.id}\n          perfIops: 5000\n      publicIpsV4Count: 1\n      privateNetworkIds:\n        - ${mainPrivateNetwork.id}\n  mainInstanceGroup:\n    type: scaleway:autoscaling:InstanceGroup\n    name: main\n    properties:\n      name: autoscaling-instance-group-basic\n      templateId: ${mainInstanceTemplate.id}\n      tags:\n        - terraform-test\n        - instance-group\n      capacities:\n        - maxReplicas: 5\n          minReplicas: 1\n          cooldownDelay: '300'\n      loadBalancers:\n        - id: ${mainLoadBalancer.id}\n          backendIds:\n            - ${mainBackend.id}\n          privateNetworkId: ${mainPrivateNetwork.id}\n      deleteServersOnDestroy: true\n  up:\n    type: scaleway:autoscaling:InstancePolicy\n    properties:\n      instanceGroupId: ${mainInstanceGroup.id}\n      name: scale-up-if-cpu-high\n      action: scale_up\n      type: flat_count\n      value: 1\n      priority: 1\n      metrics:\n        - name: cpu scale up\n          managedMetric: managed_metric_instance_cpu\n          operator: operator_greater_than\n          aggregate: aggregate_average\n          samplingRangeMin: 5\n          threshold: 70\n  down:\n    type: scaleway:autoscaling:InstancePolicy\n    properties:\n      instanceGroupId: ${mainInstanceGroup.id}\n      name: scale-down-if-cpu-low\n      action: scale_down\n      type: flat_count\n      value: 1\n      priority: 2\n      metrics:\n        - name: cpu scale down\n          managedMetric: managed_metric_instance_cpu\n          operator: operator_less_than\n          aggregate: aggregate_average\n          samplingRangeMin: 5\n          threshold: 40\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscaling Instance groups can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:autoscaling/instanceGroup:InstanceGroup main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "capacities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceGroupCapacity:InstanceGroupCapacity"
                    },
                    "description": "The specification of the minimum and maximum replicas for the Instance group, and the cooldown interval between two scaling events.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of Instance group's creation (RFC 3339 format).\n"
                },
                "deleteServersOnDestroy": {
                    "type": "boolean",
                    "description": "Whether to delete all instances in this group when the group is destroyed. 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 to tear them down, \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 default) leaves them running.\n"
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceGroupLoadBalancer:InstanceGroupLoadBalancer"
                    },
                    "description": "The specification of the Load Balancer to link to the Instance group.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance group name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Instance group.\n"
                },
                "templateId": {
                    "type": "string",
                    "description": "The ID of the Instance template to attach to the Instance group.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of Instance group's last update (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance group exists.\n"
                }
            },
            "required": [
                "capacities",
                "createdAt",
                "loadBalancers",
                "name",
                "projectId",
                "templateId",
                "updatedAt"
            ],
            "inputProperties": {
                "capacities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceGroupCapacity:InstanceGroupCapacity"
                    },
                    "description": "The specification of the minimum and maximum replicas for the Instance group, and the cooldown interval between two scaling events.\n"
                },
                "deleteServersOnDestroy": {
                    "type": "boolean",
                    "description": "Whether to delete all instances in this group when the group is destroyed. 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 to tear them down, \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 default) leaves them running.\n"
                },
                "loadBalancers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceGroupLoadBalancer:InstanceGroupLoadBalancer"
                    },
                    "description": "The specification of the Load Balancer to link to the Instance group.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance group name.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance group is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Instance group.\n"
                },
                "templateId": {
                    "type": "string",
                    "description": "The ID of the Instance template to attach to the Instance group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance group exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "templateId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceGroup resources.\n",
                "properties": {
                    "capacities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:autoscaling/InstanceGroupCapacity:InstanceGroupCapacity"
                        },
                        "description": "The specification of the minimum and maximum replicas for the Instance group, and the cooldown interval between two scaling events.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of Instance group's creation (RFC 3339 format).\n"
                    },
                    "deleteServersOnDestroy": {
                        "type": "boolean",
                        "description": "Whether to delete all instances in this group when the group is destroyed. 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 to tear them down, \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 default) leaves them running.\n"
                    },
                    "loadBalancers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:autoscaling/InstanceGroupLoadBalancer:InstanceGroupLoadBalancer"
                        },
                        "description": "The specification of the Load Balancer to link to the Instance group.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The Instance group name.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance group is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Instance group.\n"
                    },
                    "templateId": {
                        "type": "string",
                        "description": "The ID of the Instance template to attach to the Instance group.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of Instance group's last update (RFC 3339 format).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance group exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:autoscaling/instancePolicy:InstancePolicy": {
            "description": "Books and manages Autoscaling Instance policies.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst up = new scaleway.autoscaling.InstancePolicy(\"up\", {\n    instanceGroupId: main.id,\n    name: \"scale-up-if-cpu-high\",\n    action: \"scale_up\",\n    type: \"flat_count\",\n    value: 1,\n    priority: 1,\n    metrics: [{\n        name: \"cpu scale up\",\n        managedMetric: \"managed_metric_instance_cpu\",\n        operator: \"operator_greater_than\",\n        aggregate: \"aggregate_average\",\n        samplingRangeMin: 5,\n        threshold: 70,\n    }],\n});\nconst down = new scaleway.autoscaling.InstancePolicy(\"down\", {\n    instanceGroupId: main.id,\n    name: \"scale-down-if-cpu-low\",\n    action: \"scale_down\",\n    type: \"flat_count\",\n    value: 1,\n    priority: 2,\n    metrics: [{\n        name: \"cpu scale down\",\n        managedMetric: \"managed_metric_instance_cpu\",\n        operator: \"operator_less_than\",\n        aggregate: \"aggregate_average\",\n        samplingRangeMin: 5,\n        threshold: 40,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nup = scaleway.autoscaling.InstancePolicy(\"up\",\n    instance_group_id=main[\"id\"],\n    name=\"scale-up-if-cpu-high\",\n    action=\"scale_up\",\n    type=\"flat_count\",\n    value=1,\n    priority=1,\n    metrics=[{\n        \"name\": \"cpu scale up\",\n        \"managed_metric\": \"managed_metric_instance_cpu\",\n        \"operator\": \"operator_greater_than\",\n        \"aggregate\": \"aggregate_average\",\n        \"sampling_range_min\": 5,\n        \"threshold\": 70,\n    }])\ndown = scaleway.autoscaling.InstancePolicy(\"down\",\n    instance_group_id=main[\"id\"],\n    name=\"scale-down-if-cpu-low\",\n    action=\"scale_down\",\n    type=\"flat_count\",\n    value=1,\n    priority=2,\n    metrics=[{\n        \"name\": \"cpu scale down\",\n        \"managed_metric\": \"managed_metric_instance_cpu\",\n        \"operator\": \"operator_less_than\",\n        \"aggregate\": \"aggregate_average\",\n        \"sampling_range_min\": 5,\n        \"threshold\": 40,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var up = new Scaleway.Autoscaling.InstancePolicy(\"up\", new()\n    {\n        InstanceGroupId = main.Id,\n        Name = \"scale-up-if-cpu-high\",\n        Action = \"scale_up\",\n        Type = \"flat_count\",\n        Value = 1,\n        Priority = 1,\n        Metrics = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstancePolicyMetricArgs\n            {\n                Name = \"cpu scale up\",\n                ManagedMetric = \"managed_metric_instance_cpu\",\n                Operator = \"operator_greater_than\",\n                Aggregate = \"aggregate_average\",\n                SamplingRangeMin = 5,\n                Threshold = 70,\n            },\n        },\n    });\n\n    var down = new Scaleway.Autoscaling.InstancePolicy(\"down\", new()\n    {\n        InstanceGroupId = main.Id,\n        Name = \"scale-down-if-cpu-low\",\n        Action = \"scale_down\",\n        Type = \"flat_count\",\n        Value = 1,\n        Priority = 2,\n        Metrics = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstancePolicyMetricArgs\n            {\n                Name = \"cpu scale down\",\n                ManagedMetric = \"managed_metric_instance_cpu\",\n                Operator = \"operator_less_than\",\n                Aggregate = \"aggregate_average\",\n                SamplingRangeMin = 5,\n                Threshold = 40,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/autoscaling\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.NewInstancePolicy(ctx, \"up\", \u0026autoscaling.InstancePolicyArgs{\n\t\t\tInstanceGroupId: pulumi.Any(main.Id),\n\t\t\tName:            pulumi.String(\"scale-up-if-cpu-high\"),\n\t\t\tAction:          pulumi.String(\"scale_up\"),\n\t\t\tType:            pulumi.String(\"flat_count\"),\n\t\t\tValue:           pulumi.Int(1),\n\t\t\tPriority:        pulumi.Int(1),\n\t\t\tMetrics: autoscaling.InstancePolicyMetricArray{\n\t\t\t\t\u0026autoscaling.InstancePolicyMetricArgs{\n\t\t\t\t\tName:             pulumi.String(\"cpu scale up\"),\n\t\t\t\t\tManagedMetric:    pulumi.String(\"managed_metric_instance_cpu\"),\n\t\t\t\t\tOperator:         pulumi.String(\"operator_greater_than\"),\n\t\t\t\t\tAggregate:        pulumi.String(\"aggregate_average\"),\n\t\t\t\t\tSamplingRangeMin: pulumi.Int(5),\n\t\t\t\t\tThreshold:        pulumi.Int(70),\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 = autoscaling.NewInstancePolicy(ctx, \"down\", \u0026autoscaling.InstancePolicyArgs{\n\t\t\tInstanceGroupId: pulumi.Any(main.Id),\n\t\t\tName:            pulumi.String(\"scale-down-if-cpu-low\"),\n\t\t\tAction:          pulumi.String(\"scale_down\"),\n\t\t\tType:            pulumi.String(\"flat_count\"),\n\t\t\tValue:           pulumi.Int(1),\n\t\t\tPriority:        pulumi.Int(2),\n\t\t\tMetrics: autoscaling.InstancePolicyMetricArray{\n\t\t\t\t\u0026autoscaling.InstancePolicyMetricArgs{\n\t\t\t\t\tName:             pulumi.String(\"cpu scale down\"),\n\t\t\t\t\tManagedMetric:    pulumi.String(\"managed_metric_instance_cpu\"),\n\t\t\t\t\tOperator:         pulumi.String(\"operator_less_than\"),\n\t\t\t\t\tAggregate:        pulumi.String(\"aggregate_average\"),\n\t\t\t\t\tSamplingRangeMin: pulumi.Int(5),\n\t\t\t\t\tThreshold:        pulumi.Int(40),\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.scaleway.autoscaling.InstancePolicy;\nimport com.pulumi.scaleway.autoscaling.InstancePolicyArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstancePolicyMetricArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 up = new InstancePolicy(\"up\", InstancePolicyArgs.builder()\n            .instanceGroupId(main.id())\n            .name(\"scale-up-if-cpu-high\")\n            .action(\"scale_up\")\n            .type(\"flat_count\")\n            .value(1)\n            .priority(1)\n            .metrics(InstancePolicyMetricArgs.builder()\n                .name(\"cpu scale up\")\n                .managedMetric(\"managed_metric_instance_cpu\")\n                .operator(\"operator_greater_than\")\n                .aggregate(\"aggregate_average\")\n                .samplingRangeMin(5)\n                .threshold(70)\n                .build())\n            .build());\n\n        var down = new InstancePolicy(\"down\", InstancePolicyArgs.builder()\n            .instanceGroupId(main.id())\n            .name(\"scale-down-if-cpu-low\")\n            .action(\"scale_down\")\n            .type(\"flat_count\")\n            .value(1)\n            .priority(2)\n            .metrics(InstancePolicyMetricArgs.builder()\n                .name(\"cpu scale down\")\n                .managedMetric(\"managed_metric_instance_cpu\")\n                .operator(\"operator_less_than\")\n                .aggregate(\"aggregate_average\")\n                .samplingRangeMin(5)\n                .threshold(40)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  up:\n    type: scaleway:autoscaling:InstancePolicy\n    properties:\n      instanceGroupId: ${main.id}\n      name: scale-up-if-cpu-high\n      action: scale_up\n      type: flat_count\n      value: 1\n      priority: 1\n      metrics:\n        - name: cpu scale up\n          managedMetric: managed_metric_instance_cpu\n          operator: operator_greater_than\n          aggregate: aggregate_average\n          samplingRangeMin: 5\n          threshold: 70\n  down:\n    type: scaleway:autoscaling:InstancePolicy\n    properties:\n      instanceGroupId: ${main.id}\n      name: scale-down-if-cpu-low\n      action: scale_down\n      type: flat_count\n      value: 1\n      priority: 2\n      metrics:\n        - name: cpu scale down\n          managedMetric: managed_metric_instance_cpu\n          operator: operator_less_than\n          aggregate: aggregate_average\n          samplingRangeMin: 5\n          threshold: 40\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscaling instance policies can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:autoscaling/instancePolicy:InstancePolicy main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The action to execute when the metric-based condition is met.\n"
                },
                "instanceGroupId": {
                    "type": "string",
                    "description": "The ID of the Instance group related to this policy.\n"
                },
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstancePolicyMetric:InstancePolicyMetric"
                    },
                    "description": "Cockpit metric to use when determining whether to trigger a scale up/down action.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance policy name.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of this policy compared to all other scaling policies. This determines the processing order. The lower the number, the higher the priority.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance policy is associated with.\n"
                },
                "type": {
                    "type": "string",
                    "description": "How to use the number defined in \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 when determining by how many Instances to scale up/down.\n"
                },
                "value": {
                    "type": "integer",
                    "description": "The value representing the magnitude of the scaling action to take for the Instance group. Depending on the \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 parameter, this number could represent a total number of Instances in the group, a number of Instances to add, or a percentage to scale the group by.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance policy exists.\n"
                }
            },
            "required": [
                "action",
                "instanceGroupId",
                "metrics",
                "name",
                "priority",
                "projectId",
                "type",
                "value"
            ],
            "inputProperties": {
                "action": {
                    "type": "string",
                    "description": "The action to execute when the metric-based condition is met.\n"
                },
                "instanceGroupId": {
                    "type": "string",
                    "description": "The ID of the Instance group related to this policy.\n"
                },
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstancePolicyMetric:InstancePolicyMetric"
                    },
                    "description": "Cockpit metric to use when determining whether to trigger a scale up/down action.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance policy name.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of this policy compared to all other scaling policies. This determines the processing order. The lower the number, the higher the priority.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance policy is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "How to use the number defined in \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 when determining by how many Instances to scale up/down.\n"
                },
                "value": {
                    "type": "integer",
                    "description": "The value representing the magnitude of the scaling action to take for the Instance group. Depending on the \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 parameter, this number could represent a total number of Instances in the group, a number of Instances to add, or a percentage to scale the group by.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance policy exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "action",
                "instanceGroupId",
                "priority",
                "type",
                "value"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstancePolicy resources.\n",
                "properties": {
                    "action": {
                        "type": "string",
                        "description": "The action to execute when the metric-based condition is met.\n"
                    },
                    "instanceGroupId": {
                        "type": "string",
                        "description": "The ID of the Instance group related to this policy.\n"
                    },
                    "metrics": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:autoscaling/InstancePolicyMetric:InstancePolicyMetric"
                        },
                        "description": "Cockpit metric to use when determining whether to trigger a scale up/down action.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The Instance policy name.\n"
                    },
                    "priority": {
                        "type": "integer",
                        "description": "The priority of this policy compared to all other scaling policies. This determines the processing order. The lower the number, the higher the priority.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance policy is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "type": {
                        "type": "string",
                        "description": "How to use the number defined in \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 when determining by how many Instances to scale up/down.\n"
                    },
                    "value": {
                        "type": "integer",
                        "description": "The value representing the magnitude of the scaling action to take for the Instance group. Depending on the \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 parameter, this number could represent a total number of Instances in the group, a number of Instances to add, or a percentage to scale the group by.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance policy exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:autoscaling/instanceTemplate:InstanceTemplate": {
            "description": "Books and manages Autoscaling Instance templates.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.autoscaling.InstanceTemplate(\"main\", {\n    name: \"asg-template\",\n    commercialType: \"PLAY2-MICRO\",\n    tags: [\n        \"terraform-test\",\n        \"basic\",\n    ],\n    volumes: [{\n        name: \"as-volume\",\n        volumeType: \"sbs\",\n        boot: true,\n        fromSnapshot: {\n            snapshotId: mainScalewayBlockSnapshot.id,\n        },\n        perfIops: 5000,\n    }],\n    publicIpsV4Count: 1,\n    privateNetworkIds: [mainScalewayVpcPrivateNetwork.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.autoscaling.InstanceTemplate(\"main\",\n    name=\"asg-template\",\n    commercial_type=\"PLAY2-MICRO\",\n    tags=[\n        \"terraform-test\",\n        \"basic\",\n    ],\n    volumes=[{\n        \"name\": \"as-volume\",\n        \"volume_type\": \"sbs\",\n        \"boot\": True,\n        \"from_snapshot\": {\n            \"snapshot_id\": main_scaleway_block_snapshot[\"id\"],\n        },\n        \"perf_iops\": 5000,\n    }],\n    public_ips_v4_count=1,\n    private_network_ids=[main_scaleway_vpc_private_network[\"id\"]])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Autoscaling.InstanceTemplate(\"main\", new()\n    {\n        Name = \"asg-template\",\n        CommercialType = \"PLAY2-MICRO\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"basic\",\n        },\n        Volumes = new[]\n        {\n            new Scaleway.Autoscaling.Inputs.InstanceTemplateVolumeArgs\n            {\n                Name = \"as-volume\",\n                VolumeType = \"sbs\",\n                Boot = true,\n                FromSnapshot = new Scaleway.Autoscaling.Inputs.InstanceTemplateVolumeFromSnapshotArgs\n                {\n                    SnapshotId = mainScalewayBlockSnapshot.Id,\n                },\n                PerfIops = 5000,\n            },\n        },\n        PublicIpsV4Count = 1,\n        PrivateNetworkIds = new[]\n        {\n            mainScalewayVpcPrivateNetwork.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/autoscaling\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := autoscaling.NewInstanceTemplate(ctx, \"main\", \u0026autoscaling.InstanceTemplateArgs{\n\t\t\tName:           pulumi.String(\"asg-template\"),\n\t\t\tCommercialType: pulumi.String(\"PLAY2-MICRO\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"basic\"),\n\t\t\t},\n\t\t\tVolumes: autoscaling.InstanceTemplateVolumeArray{\n\t\t\t\t\u0026autoscaling.InstanceTemplateVolumeArgs{\n\t\t\t\t\tName:       pulumi.String(\"as-volume\"),\n\t\t\t\t\tVolumeType: pulumi.String(\"sbs\"),\n\t\t\t\t\tBoot:       pulumi.Bool(true),\n\t\t\t\t\tFromSnapshot: \u0026autoscaling.InstanceTemplateVolumeFromSnapshotArgs{\n\t\t\t\t\t\tSnapshotId: pulumi.Any(mainScalewayBlockSnapshot.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPerfIops: pulumi.Int(5000),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPublicIpsV4Count: pulumi.Int(1),\n\t\t\tPrivateNetworkIds: pulumi.StringArray{\n\t\t\t\tmainScalewayVpcPrivateNetwork.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.scaleway.autoscaling.InstanceTemplate;\nimport com.pulumi.scaleway.autoscaling.InstanceTemplateArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceTemplateVolumeArgs;\nimport com.pulumi.scaleway.autoscaling.inputs.InstanceTemplateVolumeFromSnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new InstanceTemplate(\"main\", InstanceTemplateArgs.builder()\n            .name(\"asg-template\")\n            .commercialType(\"PLAY2-MICRO\")\n            .tags(            \n                \"terraform-test\",\n                \"basic\")\n            .volumes(InstanceTemplateVolumeArgs.builder()\n                .name(\"as-volume\")\n                .volumeType(\"sbs\")\n                .boot(true)\n                .fromSnapshot(InstanceTemplateVolumeFromSnapshotArgs.builder()\n                    .snapshotId(mainScalewayBlockSnapshot.id())\n                    .build())\n                .perfIops(5000)\n                .build())\n            .publicIpsV4Count(1)\n            .privateNetworkIds(mainScalewayVpcPrivateNetwork.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:autoscaling:InstanceTemplate\n    properties:\n      name: asg-template\n      commercialType: PLAY2-MICRO\n      tags:\n        - terraform-test\n        - basic\n      volumes:\n        - name: as-volume\n          volumeType: sbs\n          boot: true\n          fromSnapshot:\n            snapshotId: ${mainScalewayBlockSnapshot.id}\n          perfIops: 5000\n      publicIpsV4Count: 1\n      privateNetworkIds:\n        - ${mainScalewayVpcPrivateNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutoscaling Instance templates can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:autoscaling/instanceTemplate:InstanceTemplate main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                },
                "commercialType": {
                    "type": "string",
                    "description": "The name of Instance commercial type.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of Instance group's creation (RFC 3339 format).\n"
                },
                "imageId": {
                    "type": "string",
                    "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance group template.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The instance placement group ID. This is optional, but it is highly recommended to set a preference for Instance location within Availability Zone.\n"
                },
                "privateNetworkIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The private Network IDs to attach to the new Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance template is associated with.\n"
                },
                "publicIpsV4Count": {
                    "type": "integer",
                    "description": "The number of flexible IPv4 addresses to attach to the new Instance.\n"
                },
                "publicIpsV6Count": {
                    "type": "integer",
                    "description": "The number of flexible IPv6 addresses to attach to the new Instance.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The instance security group ID.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The Instance template status"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Instance template.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of Instance group's last update (RFC 3339 format).\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceTemplateVolume:InstanceTemplateVolume"
                    },
                    "description": "The template of Instance volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance template exists.\n"
                }
            },
            "required": [
                "commercialType",
                "createdAt",
                "name",
                "projectId",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "cloudInit": {
                    "type": "string",
                    "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                },
                "commercialType": {
                    "type": "string",
                    "description": "The name of Instance commercial type.\n"
                },
                "imageId": {
                    "type": "string",
                    "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Instance group template.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The instance placement group ID. This is optional, but it is highly recommended to set a preference for Instance location within Availability Zone.\n"
                },
                "privateNetworkIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The private Network IDs to attach to the new Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance template is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicIpsV4Count": {
                    "type": "integer",
                    "description": "The number of flexible IPv4 addresses to attach to the new Instance.\n"
                },
                "publicIpsV6Count": {
                    "type": "integer",
                    "description": "The number of flexible IPv6 addresses to attach to the new Instance.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The instance security group ID.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Instance template.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:autoscaling/InstanceTemplateVolume:InstanceTemplateVolume"
                    },
                    "description": "The template of Instance volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance template exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "commercialType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceTemplate resources.\n",
                "properties": {
                    "cloudInit": {
                        "type": "string",
                        "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                    },
                    "commercialType": {
                        "type": "string",
                        "description": "The name of Instance commercial type.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of Instance group's creation (RFC 3339 format).\n"
                    },
                    "imageId": {
                        "type": "string",
                        "description": "The instance image ID. Can be an ID of a marketplace or personal image. This image must be compatible with \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 \u003cspan pulumi-lang-nodejs=\"`commercialType`\" pulumi-lang-dotnet=\"`CommercialType`\" pulumi-lang-go=\"`commercialType`\" pulumi-lang-python=\"`commercial_type`\" pulumi-lang-yaml=\"`commercialType`\" pulumi-lang-java=\"`commercialType`\"\u003e`commercialType`\u003c/span\u003e template.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The Instance group template.\n"
                    },
                    "placementGroupId": {
                        "type": "string",
                        "description": "The instance placement group ID. This is optional, but it is highly recommended to set a preference for Instance location within Availability Zone.\n"
                    },
                    "privateNetworkIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The private Network IDs to attach to the new Instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Instance template is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicIpsV4Count": {
                        "type": "integer",
                        "description": "The number of flexible IPv4 addresses to attach to the new Instance.\n"
                    },
                    "publicIpsV6Count": {
                        "type": "integer",
                        "description": "The number of flexible IPv6 addresses to attach to the new Instance.\n"
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The instance security group ID.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The Instance template status"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Instance template.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of Instance group's last update (RFC 3339 format).\n"
                    },
                    "volumes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:autoscaling/InstanceTemplateVolume:InstanceTemplateVolume"
                        },
                        "description": "The template of Instance volume.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Instance template exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:block/snapshot:Snapshot": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.block.Snapshot`\" pulumi-lang-dotnet=\"`scaleway.block.Snapshot`\" pulumi-lang-go=\"`block.Snapshot`\" pulumi-lang-python=\"`block.Snapshot`\" pulumi-lang-yaml=\"`scaleway.block.Snapshot`\" pulumi-lang-java=\"`scaleway.block.Snapshot`\"\u003e`scaleway.block.Snapshot`\u003c/span\u003e resource is used to create and manage snapshots of Block Storage volumes.\n\nRefer to the Block Storage [product documentation](https://www.scaleway.com/en/docs/block-storage/) and [API documentation](https://www.scaleway.com/en/developers/api/block/) for more information.\n\n## Example Usage\n\n### Create a snapshot of a Block Storage volume\n\nThe following command allows you to create a snapshot (`some-snapshot-name`) from a Block Storage volume specified by its ID.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst blockVolume = new scaleway.block.Volume(\"block_volume\", {\n    iops: 5000,\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\nconst blockSnapshot = new scaleway.block.Snapshot(\"block_snapshot\", {\n    name: \"some-snapshot-name\",\n    volumeId: blockVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nblock_volume = scaleway.block.Volume(\"block_volume\",\n    iops=5000,\n    name=\"some-volume-name\",\n    size_in_gb=20)\nblock_snapshot = scaleway.block.Snapshot(\"block_snapshot\",\n    name=\"some-snapshot-name\",\n    volume_id=block_volume.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var blockVolume = new Scaleway.Block.Volume(\"block_volume\", new()\n    {\n        Iops = 5000,\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n    var blockSnapshot = new Scaleway.Block.Snapshot(\"block_snapshot\", new()\n    {\n        Name = \"some-snapshot-name\",\n        VolumeId = blockVolume.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tblockVolume, err := block.NewVolume(ctx, \"block_volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewSnapshot(ctx, \"block_snapshot\", \u0026block.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"some-snapshot-name\"),\n\t\t\tVolumeId: blockVolume.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.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.block.Snapshot;\nimport com.pulumi.scaleway.block.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 blockVolume = new Volume(\"blockVolume\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n        var blockSnapshot = new Snapshot(\"blockSnapshot\", SnapshotArgs.builder()\n            .name(\"some-snapshot-name\")\n            .volumeId(blockVolume.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  blockVolume:\n    type: scaleway:block:Volume\n    name: block_volume\n    properties:\n      iops: 5000\n      name: some-volume-name\n      sizeInGb: 20\n  blockSnapshot:\n    type: scaleway:block:Snapshot\n    name: block_snapshot\n    properties:\n      name: some-snapshot-name\n      volumeId: ${blockVolume.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### How to import from Object Storage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst my_import_bucket = new scaleway.object.Bucket(\"my-import-bucket\", {name: \"snapshot-bucket-to-import\"});\nconst qcow_object = new scaleway.object.Item(\"qcow-object\", {\n    bucket: snapshot_bucket.name,\n    key: \"my-snapshot.qcow2\",\n    file: \"imported-snapshot/snapshot.qcow2\",\n});\nconst imported = new scaleway.block.Volume(\"imported\", {\n    iops: 5000,\n    name: \"imported-from-qcow\",\n    \"import\": [{\n        bucket: \"my-import-bucket\",\n        key: \"imported-snapshot/snapshot.qcow2\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmy_import_bucket = scaleway.object.Bucket(\"my-import-bucket\", name=\"snapshot-bucket-to-import\")\nqcow_object = scaleway.object.Item(\"qcow-object\",\n    bucket=snapshot_bucket[\"name\"],\n    key=\"my-snapshot.qcow2\",\n    file=\"imported-snapshot/snapshot.qcow2\")\nimported = scaleway.block.Volume(\"imported\",\n    iops=5000,\n    name=\"imported-from-qcow\",\n    import_=[{\n        \"bucket\": \"my-import-bucket\",\n        \"key\": \"imported-snapshot/snapshot.qcow2\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_import_bucket = new Scaleway.Object.Bucket(\"my-import-bucket\", new()\n    {\n        Name = \"snapshot-bucket-to-import\",\n    });\n\n    var qcow_object = new Scaleway.Object.Item(\"qcow-object\", new()\n    {\n        Bucket = snapshot_bucket.Name,\n        Key = \"my-snapshot.qcow2\",\n        File = \"imported-snapshot/snapshot.qcow2\",\n    });\n\n    var imported = new Scaleway.Block.Volume(\"imported\", new()\n    {\n        Iops = 5000,\n        Name = \"imported-from-qcow\",\n        Import = new[]\n        {\n            \n            {\n                { \"bucket\", \"my-import-bucket\" },\n                { \"key\", \"imported-snapshot/snapshot.qcow2\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"my-import-bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-bucket-to-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"qcow-object\", \u0026object.ItemArgs{\n\t\t\tBucket: pulumi.Any(snapshot_bucket.Name),\n\t\t\tKey:    pulumi.String(\"my-snapshot.qcow2\"),\n\t\t\tFile:   pulumi.String(\"imported-snapshot/snapshot.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"imported\", \u0026block.VolumeArgs{\n\t\t\tIops: pulumi.Int(5000),\n\t\t\tName: pulumi.String(\"imported-from-qcow\"),\n\t\t\tImport: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bucket\": \"my-import-bucket\",\n\t\t\t\t\t\"key\":    \"imported-snapshot/snapshot.qcow2\",\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_import_bucket = new Bucket(\"my-import-bucket\", BucketArgs.builder()\n            .name(\"snapshot-bucket-to-import\")\n            .build());\n\n        var qcow_object = new Item(\"qcow-object\", ItemArgs.builder()\n            .bucket(snapshot_bucket.name())\n            .key(\"my-snapshot.qcow2\")\n            .file(\"imported-snapshot/snapshot.qcow2\")\n            .build());\n\n        var imported = new Volume(\"imported\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"imported-from-qcow\")\n            .import_(Arrays.asList(Map.ofEntries(\n                Map.entry(\"bucket\", \"my-import-bucket\"),\n                Map.entry(\"key\", \"imported-snapshot/snapshot.qcow2\")\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-import-bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-bucket-to-import\n  qcow-object:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${[\"snapshot-bucket\"].name}\n      key: my-snapshot.qcow2\n      file: imported-snapshot/snapshot.qcow2\n  imported:\n    type: scaleway:block:Volume\n    properties:\n      iops: 5000\n      name: imported-from-qcow\n      import:\n        - bucket: my-import-bucket\n          key: imported-snapshot/snapshot.qcow2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### How to export to Object Storage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst my_import_bucket = new scaleway.object.Bucket(\"my-import-bucket\", {name: \"snapshot-bucket-to-import\"});\nconst qcow_object = new scaleway.object.Item(\"qcow-object\", {\n    bucket: snapshot_bucket.name,\n    key: \"export/my-snapshot.qcow2\",\n});\nconst toExport = new scaleway.block.Volume(\"to_export\", {\n    iops: 5000,\n    name: \"to-export\",\n    \"export\": [{\n        bucket: \"snapshot-bucket-to-import\",\n        key: \"exports/my-snapshot.qcow2\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmy_import_bucket = scaleway.object.Bucket(\"my-import-bucket\", name=\"snapshot-bucket-to-import\")\nqcow_object = scaleway.object.Item(\"qcow-object\",\n    bucket=snapshot_bucket[\"name\"],\n    key=\"export/my-snapshot.qcow2\")\nto_export = scaleway.block.Volume(\"to_export\",\n    iops=5000,\n    name=\"to-export\",\n    export=[{\n        \"bucket\": \"snapshot-bucket-to-import\",\n        \"key\": \"exports/my-snapshot.qcow2\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_import_bucket = new Scaleway.Object.Bucket(\"my-import-bucket\", new()\n    {\n        Name = \"snapshot-bucket-to-import\",\n    });\n\n    var qcow_object = new Scaleway.Object.Item(\"qcow-object\", new()\n    {\n        Bucket = snapshot_bucket.Name,\n        Key = \"export/my-snapshot.qcow2\",\n    });\n\n    var toExport = new Scaleway.Block.Volume(\"to_export\", new()\n    {\n        Iops = 5000,\n        Name = \"to-export\",\n        Export = new[]\n        {\n            \n            {\n                { \"bucket\", \"snapshot-bucket-to-import\" },\n                { \"key\", \"exports/my-snapshot.qcow2\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"my-import-bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-bucket-to-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"qcow-object\", \u0026object.ItemArgs{\n\t\t\tBucket: pulumi.Any(snapshot_bucket.Name),\n\t\t\tKey:    pulumi.String(\"export/my-snapshot.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"to_export\", \u0026block.VolumeArgs{\n\t\t\tIops: pulumi.Int(5000),\n\t\t\tName: pulumi.String(\"to-export\"),\n\t\t\tExport: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bucket\": \"snapshot-bucket-to-import\",\n\t\t\t\t\t\"key\":    \"exports/my-snapshot.qcow2\",\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_import_bucket = new Bucket(\"my-import-bucket\", BucketArgs.builder()\n            .name(\"snapshot-bucket-to-import\")\n            .build());\n\n        var qcow_object = new Item(\"qcow-object\", ItemArgs.builder()\n            .bucket(snapshot_bucket.name())\n            .key(\"export/my-snapshot.qcow2\")\n            .build());\n\n        var toExport = new Volume(\"toExport\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"to-export\")\n            .export(Arrays.asList(Map.ofEntries(\n                Map.entry(\"bucket\", \"snapshot-bucket-to-import\"),\n                Map.entry(\"key\", \"exports/my-snapshot.qcow2\")\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-import-bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-bucket-to-import\n  qcow-object:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${[\"snapshot-bucket\"].name}\n      key: export/my-snapshot.qcow2\n  toExport:\n    type: scaleway:block:Volume\n    name: to_export\n    properties:\n      iops: 5000\n      name: to-export\n      export:\n        - bucket: snapshot-bucket-to-import\n          key: exports/my-snapshot.qcow2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import the snapshot of a Block Storage volume using the zoned ID format (`{zone}/{id}`).\n\n```sh\n$ pulumi import scaleway:block/snapshot:Snapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "export": {
                    "$ref": "#/types/scaleway:block/SnapshotExport:SnapshotExport",
                    "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:block/SnapshotImport:SnapshotImport",
                    "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Scaleway Project the snapshot is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the snapshot should be created.\n"
                }
            },
            "required": [
                "name",
                "projectId"
            ],
            "inputProperties": {
                "export": {
                    "$ref": "#/types/scaleway:block/SnapshotExport:SnapshotExport",
                    "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:block/SnapshotImport:SnapshotImport",
                    "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Scaleway Project the snapshot is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the snapshot should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Snapshot resources.\n",
                "properties": {
                    "export": {
                        "$ref": "#/types/scaleway:block/SnapshotExport:SnapshotExport",
                        "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                    },
                    "import": {
                        "$ref": "#/types/scaleway:block/SnapshotImport:SnapshotImport",
                        "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "). The ID of the Scaleway Project the snapshot is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the snapshot.\n"
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "The ID of the volume to take a snapshot from.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "). The zone in which the snapshot should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/blockSnapshot:BlockSnapshot"
                }
            ]
        },
        "scaleway:block/volume:Volume": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.block.Volume`\" pulumi-lang-dotnet=\"`scaleway.block.Volume`\" pulumi-lang-go=\"`block.Volume`\" pulumi-lang-python=\"`block.Volume`\" pulumi-lang-yaml=\"`scaleway.block.Volume`\" pulumi-lang-java=\"`scaleway.block.Volume`\"\u003e`scaleway.block.Volume`\u003c/span\u003e resource is used to create and manage Scaleway Block Storage volumes.\n\nRefer to the Block Storage [product documentation](https://www.scaleway.com/en/docs/block-storage/) and [API documentation](https://www.scaleway.com/en/developers/api/block/) for more information.\n\n## Example Usage\n\n### Create a Block Storage volume\n\nThe following command allows you to create a Block Storage volume of 20 GB with a 5000 [IOPS](https://www.scaleway.com/en/docs/block-storage/concepts/#iops).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst blockVolume = new scaleway.block.Volume(\"block_volume\", {\n    iops: 5000,\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nblock_volume = scaleway.block.Volume(\"block_volume\",\n    iops=5000,\n    name=\"some-volume-name\",\n    size_in_gb=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var blockVolume = new Scaleway.Block.Volume(\"block_volume\", new()\n    {\n        Iops = 5000,\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := block.NewVolume(ctx, \"block_volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 blockVolume = new Volume(\"blockVolume\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  blockVolume:\n    type: scaleway:block:Volume\n    name: block_volume\n    properties:\n      iops: 5000\n      name: some-volume-name\n      sizeInGb: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst base = new scaleway.block.Volume(\"base\", {\n    name: \"block-volume-base\",\n    iops: 5000,\n    sizeInGb: 20,\n});\nconst main = new scaleway.block.Snapshot(\"main\", {\n    name: \"block-volume-from-snapshot\",\n    volumeId: base.id,\n});\nconst mainVolume = new scaleway.block.Volume(\"main\", {\n    name: \"block-volume-from-snapshot\",\n    iops: 5000,\n    snapshotId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbase = scaleway.block.Volume(\"base\",\n    name=\"block-volume-base\",\n    iops=5000,\n    size_in_gb=20)\nmain = scaleway.block.Snapshot(\"main\",\n    name=\"block-volume-from-snapshot\",\n    volume_id=base.id)\nmain_volume = scaleway.block.Volume(\"main\",\n    name=\"block-volume-from-snapshot\",\n    iops=5000,\n    snapshot_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @base = new Scaleway.Block.Volume(\"base\", new()\n    {\n        Name = \"block-volume-base\",\n        Iops = 5000,\n        SizeInGb = 20,\n    });\n\n    var main = new Scaleway.Block.Snapshot(\"main\", new()\n    {\n        Name = \"block-volume-from-snapshot\",\n        VolumeId = @base.Id,\n    });\n\n    var mainVolume = new Scaleway.Block.Volume(\"main\", new()\n    {\n        Name = \"block-volume-from-snapshot\",\n        Iops = 5000,\n        SnapshotId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbase, err := block.NewVolume(ctx, \"base\", \u0026block.VolumeArgs{\n\t\t\tName:     pulumi.String(\"block-volume-base\"),\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := block.NewSnapshot(ctx, \"main\", \u0026block.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"block-volume-from-snapshot\"),\n\t\t\tVolumeId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"main\", \u0026block.VolumeArgs{\n\t\t\tName:       pulumi.String(\"block-volume-from-snapshot\"),\n\t\t\tIops:       pulumi.Int(5000),\n\t\t\tSnapshotId: main.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.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.block.Snapshot;\nimport com.pulumi.scaleway.block.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 base = new Volume(\"base\", VolumeArgs.builder()\n            .name(\"block-volume-base\")\n            .iops(5000)\n            .sizeInGb(20)\n            .build());\n\n        var main = new Snapshot(\"main\", SnapshotArgs.builder()\n            .name(\"block-volume-from-snapshot\")\n            .volumeId(base.id())\n            .build());\n\n        var mainVolume = new Volume(\"mainVolume\", VolumeArgs.builder()\n            .name(\"block-volume-from-snapshot\")\n            .iops(5000)\n            .snapshotId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  base:\n    type: scaleway:block:Volume\n    properties:\n      name: block-volume-base\n      iops: 5000\n      sizeInGb: 20\n  main:\n    type: scaleway:block:Snapshot\n    properties:\n      name: block-volume-from-snapshot\n      volumeId: ${base.id}\n  mainVolume:\n    type: scaleway:block:Volume\n    name: main\n    properties:\n      name: block-volume-from-snapshot\n      iops: 5000\n      snapshotId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a Block Storage volume using the zoned ID (`{zone}/{id}`) format.\n\n```sh\n$ pulumi import scaleway:block/volume:Volume block_volume fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "instanceVolumeId": {
                    "type": "string",
                    "description": "The instance volume to create the block volume from"
                },
                "iops": {
                    "type": "integer",
                    "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Project the volume is associated with.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume in gigabytes.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the volume should be created.\n"
                }
            },
            "required": [
                "instanceVolumeId",
                "iops",
                "name",
                "projectId",
                "sizeInGb"
            ],
            "inputProperties": {
                "instanceVolumeId": {
                    "type": "string",
                    "description": "The instance volume to create the block volume from",
                    "willReplaceOnChanges": true
                },
                "iops": {
                    "type": "integer",
                    "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Project the volume is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume in gigabytes.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the volume should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "iops"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Volume resources.\n",
                "properties": {
                    "instanceVolumeId": {
                        "type": "string",
                        "description": "The instance volume to create the block volume from",
                        "willReplaceOnChanges": true
                    },
                    "iops": {
                        "type": "integer",
                        "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "). The ID of the Project the volume is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "The size of the volume in gigabytes.\n"
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "If set, the new volume will be created from this snapshot.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the volume.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "). The zone in which the volume should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/blockVolume:BlockVolume"
                }
            ]
        },
        "scaleway:containers/container:Container": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Container`\" pulumi-lang-dotnet=\"`scaleway.containers.Container`\" pulumi-lang-go=\"`containers.Container`\" pulumi-lang-python=\"`containers.Container`\" pulumi-lang-yaml=\"`scaleway.containers.Container`\" pulumi-lang-java=\"`scaleway.containers.Container`\"\u003e`scaleway.containers.Container`\u003c/span\u003e resource allows you to create and manage [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Serverless Containers [product documentation](https://www.scaleway.com/en/docs/serverless/containers/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/) for more information.\n\nFor more information on the limitations of Serverless Containers, refer to the [dedicated documentation](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    description: \"This container has a description.\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n    namespaceId: main.id,\n    image: \"nginx:latest\",\n    port: 80,\n    cpuLimit: 1024,\n    memoryLimitBytes: 2048000000,\n    minScale: 3,\n    maxScale: 5,\n    timeout: 600,\n    protocol: \"http1\",\n    commands: [\n        \"bash\",\n        \"-c\",\n        \"script.sh\",\n    ],\n    args: [\n        \"some\",\n        \"args\",\n    ],\n    environmentVariables: {\n        foo: \"var\",\n    },\n    secretEnvironmentVariables: {\n        key: \"secret\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    description=\"This container has a description.\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ],\n    namespace_id=main.id,\n    image=\"nginx:latest\",\n    port=80,\n    cpu_limit=1024,\n    memory_limit_bytes=2048000000,\n    min_scale=3,\n    max_scale=5,\n    timeout=600,\n    protocol=\"http1\",\n    commands=[\n        \"bash\",\n        \"-c\",\n        \"script.sh\",\n    ],\n    args=[\n        \"some\",\n        \"args\",\n    ],\n    environment_variables={\n        \"foo\": \"var\",\n    },\n    secret_environment_variables={\n        \"key\": \"secret\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        Description = \"This container has a description.\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n        NamespaceId = main.Id,\n        Image = \"nginx:latest\",\n        Port = 80,\n        CpuLimit = 1024,\n        MemoryLimitBytes = 2048000000,\n        MinScale = 3,\n        MaxScale = 5,\n        Timeout = 600,\n        Protocol = \"http1\",\n        Commands = new[]\n        {\n            \"bash\",\n            \"-c\",\n            \"script.sh\",\n        },\n        Args = new[]\n        {\n            \"some\",\n            \"args\",\n        },\n        EnvironmentVariables = \n        {\n            { \"foo\", \"var\" },\n        },\n        SecretEnvironmentVariables = \n        {\n            { \"key\", \"secret\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container\"),\n\t\t\tDescription: pulumi.String(\"This container has a description.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t\tNamespaceId:      main.ID(),\n\t\t\tImage:            pulumi.String(\"nginx:latest\"),\n\t\t\tPort:             pulumi.Int(80),\n\t\t\tCpuLimit:         pulumi.Int(1024),\n\t\t\tMemoryLimitBytes: pulumi.Int(2048000000),\n\t\t\tMinScale:         pulumi.Int(3),\n\t\t\tMaxScale:         pulumi.Int(5),\n\t\t\tTimeout:          pulumi.Int(600),\n\t\t\tProtocol:         pulumi.String(\"http1\"),\n\t\t\tCommands: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\tpulumi.String(\"script.sh\"),\n\t\t\t},\n\t\t\tArgs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"some\"),\n\t\t\t\tpulumi.String(\"args\"),\n\t\t\t},\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"var\"),\n\t\t\t},\n\t\t\tSecretEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"key\": 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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .description(\"This container has a description.\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .namespaceId(main.id())\n            .image(\"nginx:latest\")\n            .port(80)\n            .cpuLimit(1024)\n            .memoryLimitBytes(2048000000)\n            .minScale(3)\n            .maxScale(5)\n            .timeout(600)\n            .protocol(\"http1\")\n            .commands(            \n                \"bash\",\n                \"-c\",\n                \"script.sh\")\n            .args(            \n                \"some\",\n                \"args\")\n            .environmentVariables(Map.of(\"foo\", \"var\"))\n            .secretEnvironmentVariables(Map.of(\"key\", \"secret\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container\n      description: This container has a description.\n      tags:\n        - tag1\n        - tag2\n      namespaceId: ${main.id}\n      image: nginx:latest\n      port: 80\n      cpuLimit: 1024\n      memoryLimitBytes: 2.048e+09\n      minScale: 3\n      maxScale: 5\n      timeout: 600\n      protocol: http1\n      commands:\n        - bash\n        - -c\n        - script.sh\n      args:\n        - some\n        - args\n      environmentVariables:\n        foo: var\n      secretEnvironmentVariables:\n        key: secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redeploy the container everytime an update is made\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = scaleway.registry.getNamespace({\n    name: \"my-registry\",\n});\nconst mainGetImage = main.then(main =\u003e scaleway.registry.getImage({\n    namespaceId: main.id,\n    name: \"nginx-1-29-2-alpine\",\n}));\nconst mainNamespace = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    namespaceId: mainNamespace.id,\n    image: Promise.all([main, mainGetImage, mainGetImage]).then(([main, mainGetImage, mainGetImage1]) =\u003e `${main.endpoint}/${mainGetImage.name}:${mainGetImage1.tags?.[0]}`),\n    port: 80,\n    registrySha256: std.timestamp({}).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.registry.get_namespace(name=\"my-registry\")\nmain_get_image = scaleway.registry.get_image(namespace_id=main.id,\n    name=\"nginx-1-29-2-alpine\")\nmain_namespace = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    namespace_id=main_namespace.id,\n    image=f\"{main.endpoint}/{main_get_image.name}:{main_get_image.tags[0]}\",\n    port=80,\n    registry_sha256=std.timestamp()[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = Scaleway.Registry.GetNamespace.Invoke(new()\n    {\n        Name = \"my-registry\",\n    });\n\n    var mainGetImage = Scaleway.Registry.GetImage.Invoke(new()\n    {\n        NamespaceId = main.Apply(getNamespaceResult =\u003e getNamespaceResult.Id),\n        Name = \"nginx-1-29-2-alpine\",\n    });\n\n    var mainNamespace = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        NamespaceId = mainNamespace.Id,\n        Image = Output.Tuple(main, mainGetImage, mainGetImage).Apply(values =\u003e\n        {\n            var main = values.Item1;\n            var mainGetImage = values.Item2;\n            var mainGetImage1 = values.Item3;\n            return $\"{main.Apply(getNamespaceResult =\u003e getNamespaceResult.Endpoint)}/{mainGetImage.Apply(getImageResult =\u003e getImageResult.Name)}:{mainGetImage1.Tags[0]}\";\n        }),\n        Port = 80,\n        RegistrySha256 = Std.Timestamp.Invoke().Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/registry\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := registry.LookupNamespace(ctx, \u0026registry.LookupNamespaceArgs{\n\t\t\tName: pulumi.StringRef(\"my-registry\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainGetImage, err := registry.GetImage(ctx, \u0026registry.GetImageArgs{\n\t\t\tNamespaceId: pulumi.StringRef(main.Id),\n\t\t\tName:        pulumi.StringRef(\"nginx-1-29-2-alpine\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainNamespace, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTimestamp, err := std.Timestamp(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:           pulumi.String(\"my-container\"),\n\t\t\tNamespaceId:    mainNamespace.ID(),\n\t\t\tImage:          pulumi.Sprintf(\"%v/%v:%v\", main.Endpoint, mainGetImage.Name, mainGetImage.Tags[0]),\n\t\t\tPort:           pulumi.Int(80),\n\t\t\tRegistrySha256: invokeTimestamp.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.scaleway.registry.RegistryFunctions;\nimport com.pulumi.scaleway.registry.inputs.GetNamespaceArgs;\nimport com.pulumi.scaleway.registry.inputs.GetImageArgs;\nimport com.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = RegistryFunctions.getNamespace(GetNamespaceArgs.builder()\n            .name(\"my-registry\")\n            .build());\n\n        final var mainGetImage = RegistryFunctions.getImage(GetImageArgs.builder()\n            .namespaceId(main.id())\n            .name(\"nginx-1-29-2-alpine\")\n            .build());\n\n        var mainNamespace = new Namespace(\"mainNamespace\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .namespaceId(mainNamespace.id())\n            .image(String.format(\"%s/%s:%s\", main.endpoint(),mainGetImage.name(),mainGetImage.tags()[0]))\n            .port(80)\n            .registrySha256(StdFunctions.timestamp(Map.ofEntries(\n            )).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mainNamespace:\n    type: scaleway:containers:Namespace\n    name: main\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container\n      namespaceId: ${mainNamespace.id}\n      image: ${main.endpoint}/${mainGetImage.name}:${mainGetImage.tags[0]}\n      port: 80 # At every update, timestamp() will trigger a change and redeploy the container, even though nothing else has changed.\n      registrySha256:\n        fn::invoke:\n          function: std:timestamp\n          arguments: {}\n          return: result\nvariables:\n  main:\n    fn::invoke:\n      function: scaleway:registry:getNamespace\n      arguments:\n        name: my-registry\n  mainGetImage:\n    fn::invoke:\n      function: scaleway:registry:getImage\n      arguments:\n        namespaceId: ${main.id}\n        name: nginx-1-29-2-alpine\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redeploy the container when the image changes\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n// with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n// Ideally, you would create the namespace separately.\n// For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n// in the referenced namespace.\nconst main = new scaleway.registry.Namespace(\"main\", {name: \"some-unique-name\"});\nconst nginx = scaleway.registry.getImageOutput({\n    namespaceId: main.id,\n    name: \"nginx\",\n});\nconst nginxLatest = nginx.apply(nginx =\u003e scaleway.registry.getImageTagOutput({\n    imageId: nginx.id,\n    name: \"latest\",\n}));\nconst mainNamespace = new scaleway.containers.Namespace(\"main\", {name: \"my-container-namespace\"});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"nginx-latest\",\n    namespaceId: mainNamespace.id,\n    image: pulumi.all([nginx, nginxLatest]).apply(([nginx, nginxLatest]) =\u003e `${mainScalewayRegistryNamespace.endpoint}/${nginx.name}:${nginxLatest.name}`),\n    port: 80,\n    registrySha256: nginxLatest.apply(nginxLatest =\u003e nginxLatest.digest),\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n# with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n# Ideally, you would create the namespace separately.\n# For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n# in the referenced namespace.\nmain = scaleway.registry.Namespace(\"main\", name=\"some-unique-name\")\nnginx = scaleway.registry.get_image_output(namespace_id=main.id,\n    name=\"nginx\")\nnginx_latest = nginx.apply(lambda nginx: scaleway.registry.get_image_tag_output(image_id=nginx.id,\n    name=\"latest\"))\nmain_namespace = scaleway.containers.Namespace(\"main\", name=\"my-container-namespace\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"nginx-latest\",\n    namespace_id=main_namespace.id,\n    image=pulumi.Output.all(\n        nginx=nginx,\n        nginx_latest=nginx_latest\n).apply(lambda resolved_outputs: f\"{main_scaleway_registry_namespace['endpoint']}/{nginx.name}:{nginx_latest.name}\")\n,\n    port=80,\n    registry_sha256=nginx_latest.digest)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n    // with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n    // Ideally, you would create the namespace separately.\n    // For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n    // in the referenced namespace.\n    var main = new Scaleway.Registry.Namespace(\"main\", new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n    var nginx = Scaleway.Registry.GetImage.Invoke(new()\n    {\n        NamespaceId = main.Id,\n        Name = \"nginx\",\n    });\n\n    var nginxLatest = Scaleway.Registry.GetImageTag.Invoke(new()\n    {\n        ImageId = nginx.Apply(getImageResult =\u003e getImageResult.Id),\n        Name = \"latest\",\n    });\n\n    var mainNamespace = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"my-container-namespace\",\n    });\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"nginx-latest\",\n        NamespaceId = mainNamespace.Id,\n        Image = Output.Tuple(nginx, nginxLatest).Apply(values =\u003e\n        {\n            var nginx = values.Item1;\n            var nginxLatest = values.Item2;\n            return $\"{mainScalewayRegistryNamespace.Endpoint}/{nginx.Apply(getImageResult =\u003e getImageResult.Name)}:{nginxLatest.Apply(getImageTagResult =\u003e getImageTagResult.Name)}\";\n        }),\n        Port = 80,\n        RegistrySha256 = nginxLatest.Apply(getImageTagResult =\u003e getImageTagResult.Digest),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/registry\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n\t\t// with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n\t\t// Ideally, you would create the namespace separately.\n\t\t// For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n\t\t// in the referenced namespace.\n\t\tmain, err := registry.NewNamespace(ctx, \"main\", \u0026registry.NamespaceArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnginx := registry.GetImageOutput(ctx, registry.GetImageOutputArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tName:        pulumi.String(\"nginx\"),\n\t\t}, nil)\n\t\tnginxLatest := nginx.ApplyT(func(nginx registry.GetImageResult) (registry.GetImageTagResult, error) {\n\t\t\treturn registry.GetImageTagResult(interface{}(registry.GetImageTag(ctx, \u0026registry.GetImageTagArgs{\n\t\t\t\tImageId: nginx.Id,\n\t\t\t\tName:    pulumi.StringRef(pulumi.StringRef(\"latest\")),\n\t\t\t}, nil))), nil\n\t\t}).(registry.GetImageTagResultOutput)\n\t\tmainNamespace, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"my-container-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"nginx-latest\"),\n\t\t\tNamespaceId: mainNamespace.ID(),\n\t\t\tImage: pulumi.All(nginx, nginxLatest).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tnginx := _args[0].(registry.GetImageResult)\n\t\t\t\tnginxLatest := _args[1].(registry.GetImageTagResult)\n\t\t\t\treturn fmt.Sprintf(\"%v/%v:%v\", mainScalewayRegistryNamespace.Endpoint, nginx.Name, nginxLatest.Name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRegistrySha256: pulumi.String(nginxLatest.ApplyT(func(nginxLatest registry.GetImageTagResult) (*string, error) {\n\t\t\t\treturn \u0026nginxLatest.Digest, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.scaleway.registry.RegistryFunctions;\nimport com.pulumi.scaleway.registry.inputs.GetImageArgs;\nimport com.pulumi.scaleway.registry.inputs.GetImageTagArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n        // with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n        // Ideally, you would create the namespace separately.\n        // For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n        // in the referenced namespace.\n        var main = new com.pulumi.scaleway.registry.Namespace(\"main\", com.pulumi.scaleway.registry.NamespaceArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n        final var nginx = RegistryFunctions.getImage(GetImageArgs.builder()\n            .namespaceId(main.id())\n            .name(\"nginx\")\n            .build());\n\n        final var nginxLatest = nginx.applyValue(_nginx -\u003e RegistryFunctions.getImageTag(GetImageTagArgs.builder()\n            .imageId(_nginx.id())\n            .name(\"latest\")\n            .build()));\n\n        var mainNamespace = new com.pulumi.scaleway.containers.Namespace(\"mainNamespace\", com.pulumi.scaleway.containers.NamespaceArgs.builder()\n            .name(\"my-container-namespace\")\n            .build());\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"nginx-latest\")\n            .namespaceId(mainNamespace.id())\n            .image(Output.tuple(nginx, nginxLatest).applyValue(values -\u003e {\n                var nginx = values.t1;\n                var nginxLatest = values.t2;\n                return String.format(\"%s/%s:%s\", mainScalewayRegistryNamespace.endpoint(),nginx.name(),nginxLatest.name());\n            }))\n            .port(80)\n            .registrySha256(nginxLatest.applyValue(_nginxLatest -\u003e _nginxLatest.digest()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n  # with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n\n  # Ideally, you would create the namespace separately.\n  # For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n  # in the referenced namespace.\n  main:\n    type: scaleway:registry:Namespace\n    properties:\n      name: some-unique-name\n  mainNamespace:\n    type: scaleway:containers:Namespace\n    name: main\n    properties:\n      name: my-container-namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: nginx-latest\n      namespaceId: ${mainNamespace.id}\n      image: ${mainScalewayRegistryNamespace.endpoint}/${nginx.name}:${nginxLatest.name}\n      port: 80 # Whenever the `latest` tag of the `nginx` image is updated, the `registry_sha256` will change, triggering a redeployment of the container with the new image.\n      registrySha256: ${nginxLatest.digest}\nvariables:\n  nginx:\n    fn::invoke:\n      function: scaleway:registry:getImage\n      arguments:\n        namespaceId: ${main.id}\n        name: nginx\n  nginxLatest:\n    fn::invoke:\n      function: scaleway:registry:getImageTag\n      arguments:\n        imageId: ${nginx.id}\n        name: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing authentication of private containers with IAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Project to be referenced in the IAM policy\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM resources\nconst containerAuth = new scaleway.iam.Application(\"container_auth\", {name: \"container-auth\"});\nconst accessPrivateContainers = new scaleway.iam.Policy(\"access_private_containers\", {\n    applicationId: containerAuth.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ContainersPrivateAccess\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: containerAuth.id});\n// Container resources\nconst _private = new scaleway.containers.Namespace(\"private\", {name: \"private-container-namespace\"});\nconst privateContainer = new scaleway.containers.Container(\"private\", {\n    namespaceId: _private.id,\n    image: \"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n    privacy: \"private\",\n});\nexport const secretKey = apiKey.secretKey;\nexport const containerEndpoint = privateContainer.domainName;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# Project to be referenced in the IAM policy\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM resources\ncontainer_auth = scaleway.iam.Application(\"container_auth\", name=\"container-auth\")\naccess_private_containers = scaleway.iam.Policy(\"access_private_containers\",\n    application_id=container_auth.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ContainersPrivateAccess\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=container_auth.id)\n# Container resources\nprivate = scaleway.containers.Namespace(\"private\", name=\"private-container-namespace\")\nprivate_container = scaleway.containers.Container(\"private\",\n    namespace_id=private.id,\n    image=\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n    privacy=\"private\")\npulumi.export(\"secretKey\", api_key.secret_key)\npulumi.export(\"containerEndpoint\", private_container.domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project to be referenced in the IAM policy\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM resources\n    var containerAuth = new Scaleway.Iam.Application(\"container_auth\", new()\n    {\n        Name = \"container-auth\",\n    });\n\n    var accessPrivateContainers = new Scaleway.Iam.Policy(\"access_private_containers\", new()\n    {\n        ApplicationId = containerAuth.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ContainersPrivateAccess\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = containerAuth.Id,\n    });\n\n    // Container resources\n    var @private = new Scaleway.Containers.Namespace(\"private\", new()\n    {\n        Name = \"private-container-namespace\",\n    });\n\n    var privateContainer = new Scaleway.Containers.Container(\"private\", new()\n    {\n        NamespaceId = @private.Id,\n        Image = \"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n        Privacy = \"private\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"secretKey\"] = apiKey.SecretKey,\n        [\"containerEndpoint\"] = privateContainer.DomainName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project to be referenced in the IAM policy\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM resources\n\t\tcontainerAuth, err := iam.NewApplication(ctx, \"container_auth\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"container-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"access_private_containers\", \u0026iam.PolicyArgs{\n\t\t\tApplicationId: containerAuth.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ContainersPrivateAccess\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: containerAuth.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Container resources\n\t\tprivate, err := containers.NewNamespace(ctx, \"private\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"private-container-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateContainer, err := containers.NewContainer(ctx, \"private\", \u0026containers.ContainerArgs{\n\t\t\tNamespaceId: private.ID(),\n\t\t\tImage:       pulumi.String(\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"secretKey\", apiKey.SecretKey)\n\t\tctx.Export(\"containerEndpoint\", privateContainer.DomainName)\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project to be referenced in the IAM policy\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM resources\n        var containerAuth = new Application(\"containerAuth\", ApplicationArgs.builder()\n            .name(\"container-auth\")\n            .build());\n\n        var accessPrivateContainers = new Policy(\"accessPrivateContainers\", PolicyArgs.builder()\n            .applicationId(containerAuth.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ContainersPrivateAccess\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(containerAuth.id())\n            .build());\n\n        // Container resources\n        var private_ = new Namespace(\"private\", NamespaceArgs.builder()\n            .name(\"private-container-namespace\")\n            .build());\n\n        var privateContainer = new Container(\"privateContainer\", ContainerArgs.builder()\n            .namespaceId(private_.id())\n            .image(\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\")\n            .privacy(\"private\")\n            .build());\n\n        ctx.export(\"secretKey\", apiKey.secretKey());\n        ctx.export(\"containerEndpoint\", privateContainer.domainName());\n    }\n}\n```\n```yaml\nresources:\n  # IAM resources\n  containerAuth:\n    type: scaleway:iam:Application\n    name: container_auth\n    properties:\n      name: container-auth\n  accessPrivateContainers:\n    type: scaleway:iam:Policy\n    name: access_private_containers\n    properties:\n      applicationId: ${containerAuth.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ContainersPrivateAccess\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${containerAuth.id}\n  # Container resources\n  private:\n    type: scaleway:containers:Namespace\n    properties:\n      name: private-container-namespace\n  privateContainer:\n    type: scaleway:containers:Container\n    name: private\n    properties:\n      namespaceId: ${private.id}\n      image: rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\n      privacy: private\nvariables:\n  # Project to be referenced in the IAM policy\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  # Output the secret key and the container's endpoint for the curl command\n  secretKey: ${apiKey.secretKey}\n  containerEndpoint: ${privateContainer.domainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Protocols\n\nThe following protocols are supported:\n\n* \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e: HTTP/2 over TCP.\n* \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e: Hypertext Transfer Protocol.\n\n\u003e **Important:** Refer to the official [Apache documentation](https://httpd.apache.org/docs/2.4/howto/http2.html) for more information.\n\n## Privacy\n\nBy default, creating a container will make it \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e, meaning that anybody knowing the endpoint can execute it.\n\nA container can be made \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e with the privacy parameter.\n\nRefer to the [technical information](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8) for more information on container authentication.\n\n## Memory and vCPUs configuration\n\nThe vCPU represents a portion of the underlying, physical CPU that is assigned to a particular virtual machine (VM).\n\nYou can determine the computing resources to allocate to each container.\n\nThe \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e must correspond with the right amount of vCPU. Refer to the table below to determine the right memory/vCPU combination.\n\n| Memory (in MB) | vCPU |\n|----------------|------|\n| 128            | 70m  |\n| 256            | 140m |\n| 512            | 280m |\n| 1024           | 560m |\n| 2048           | 1120 |\n| 3072           | 1680 |\n| 4096           | 2240 |\n\n~\u003e**Important:** Make sure to select the right resources, as you will be billed based on compute usage over time and the number of Containers executions.\nRefer to the [Serverless Containers pricing](https://www.scaleway.com/en/docs/faq/serverless-containers/#prices) for more information.\n\n## Health check configuration\n\nCustom health checks can be configured on the container.\n\nIt's possible to specify the HTTP path that the probe will listen to and the number of failures before considering the container as unhealthy.\nDuring a deployment, if a newly created container fails to pass the health check, the deployment is aborted.\nAs a result, lowering this value can help to reduce the time it takes to detect a failed deployment.\nThe period between health checks is also configurable.\n\nExample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    namespaceId: mainScalewayContainerNamespace.id,\n    livenessProbe: {\n        http: {\n            path: \"/ping\",\n        },\n        failureThreshold: 40,\n        interval: \"5s\",\n        timeout: \"1m\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    namespace_id=main_scaleway_container_namespace[\"id\"],\n    liveness_probe={\n        \"http\": {\n            \"path\": \"/ping\",\n        },\n        \"failure_threshold\": 40,\n        \"interval\": \"5s\",\n        \"timeout\": \"1m\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        NamespaceId = mainScalewayContainerNamespace.Id,\n        LivenessProbe = new Scaleway.Containers.Inputs.ContainerLivenessProbeArgs\n        {\n            Http = new Scaleway.Containers.Inputs.ContainerLivenessProbeHttpArgs\n            {\n                Path = \"/ping\",\n            },\n            FailureThreshold = 40,\n            Interval = \"5s\",\n            Timeout = \"1m\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container\"),\n\t\t\tNamespaceId: pulumi.Any(mainScalewayContainerNamespace.Id),\n\t\t\tLivenessProbe: \u0026containers.ContainerLivenessProbeArgs{\n\t\t\t\tHttp: \u0026containers.ContainerLivenessProbeHttpArgs{\n\t\t\t\t\tPath: pulumi.String(\"/ping\"),\n\t\t\t\t},\n\t\t\t\tFailureThreshold: pulumi.Int(40),\n\t\t\t\tInterval:         pulumi.String(\"5s\"),\n\t\t\t\tTimeout:          pulumi.String(\"1m\"),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerLivenessProbeArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerLivenessProbeHttpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Container(\"main\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .namespaceId(mainScalewayContainerNamespace.id())\n            .livenessProbe(ContainerLivenessProbeArgs.builder()\n                .http(ContainerLivenessProbeHttpArgs.builder()\n                    .path(\"/ping\")\n                    .build())\n                .failureThreshold(40)\n                .interval(\"5s\")\n                .timeout(\"1m\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Container\n    properties:\n      name: my-container\n      namespaceId: ${mainScalewayContainerNamespace.id}\n      livenessProbe:\n        http:\n          path: /ping\n        failureThreshold: 40\n        interval: 5s\n        timeout: 1m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n~\u003e**Important:** Another probe type can be set to TCP with the API, but currently the SDK has not been updated with this parameter.\nThis is why the only probe that can be used here is the HTTP probe.\nRefer to the [Serverless Containers pricing](https://www.scaleway.com/en/docs/faq/serverless-containers/#prices) for more information.\n\n## Scaling option configuration\n\nScaling option block configuration allows you to choose which parameter will scale up/down containers.\nOptions are number of concurrent requests, CPU or memory usage.\n\nExample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Container(\"main\", {\n    name: \"my-container-02\",\n    namespaceId: mainScalewayContainerNamespace.id,\n    scalingOptions: [{\n        concurrentRequestsThreshold: 15,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Container(\"main\",\n    name=\"my-container-02\",\n    namespace_id=main_scaleway_container_namespace[\"id\"],\n    scaling_options=[{\n        \"concurrent_requests_threshold\": 15,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container-02\",\n        NamespaceId = mainScalewayContainerNamespace.Id,\n        ScalingOptions = new[]\n        {\n            new Scaleway.Containers.Inputs.ContainerScalingOptionArgs\n            {\n                ConcurrentRequestsThreshold = 15,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container-02\"),\n\t\t\tNamespaceId: pulumi.Any(mainScalewayContainerNamespace.Id),\n\t\t\tScalingOptions: containers.ContainerScalingOptionArray{\n\t\t\t\t\u0026containers.ContainerScalingOptionArgs{\n\t\t\t\t\tConcurrentRequestsThreshold: pulumi.Int(15),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerScalingOptionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Container(\"main\", ContainerArgs.builder()\n            .name(\"my-container-02\")\n            .namespaceId(mainScalewayContainerNamespace.id())\n            .scalingOptions(ContainerScalingOptionArgs.builder()\n                .concurrentRequestsThreshold(15)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Container\n    properties:\n      name: my-container-02\n      namespaceId: ${mainScalewayContainerNamespace.id}\n      scalingOptions:\n        - concurrentRequestsThreshold: 15\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n~\u003e**Important**: A maximum of one of these parameters may be set. Also, when \u003cspan pulumi-lang-nodejs=\"`cpuUsageThreshold`\" pulumi-lang-dotnet=\"`CpuUsageThreshold`\" pulumi-lang-go=\"`cpuUsageThreshold`\" pulumi-lang-python=\"`cpu_usage_threshold`\" pulumi-lang-yaml=\"`cpuUsageThreshold`\" pulumi-lang-java=\"`cpuUsageThreshold`\"\u003e`cpuUsageThreshold`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryUsageThreshold`\" pulumi-lang-dotnet=\"`MemoryUsageThreshold`\" pulumi-lang-go=\"`memoryUsageThreshold`\" pulumi-lang-python=\"`memory_usage_threshold`\" pulumi-lang-yaml=\"`memoryUsageThreshold`\" pulumi-lang-java=\"`memoryUsageThreshold`\"\u003e`memoryUsageThreshold`\u003c/span\u003e are used, \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e can't be set to 0.\nRefer to the [API Reference](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-create-a-new-container) for more information.\n\n## Import\n\nContainers can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/container:Container main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container.\n"
                },
                "cronStatus": {
                    "type": "string",
                    "description": "The cron status of the container.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                    "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                },
                "description": {
                    "type": "string",
                    "description": "The description of the container.\n"
                },
                "domainName": {
                    "type": "string",
                    "description": "The native domain name of the container\n",
                    "deprecationMessage": "This attribute will be removed in the future, please use\u003cspan pulumi-lang-nodejs=\" publicEndpoint \" pulumi-lang-dotnet=\" PublicEndpoint \" pulumi-lang-go=\" publicEndpoint \" pulumi-lang-python=\" public_endpoint \" pulumi-lang-yaml=\" publicEndpoint \" pulumi-lang-java=\" publicEndpoint \"\u003e publicEndpoint \u003c/span\u003einstead"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                },
                "errorMessage": {
                    "type": "string",
                    "description": "The error message of the container.\n"
                },
                "healthChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/ContainerHealthCheck:ContainerHealthCheck"
                    },
                    "description": "Health check configuration block of the container.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                },
                "httpsConnectionsOnly": {
                    "type": "boolean",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                },
                "image": {
                    "type": "string",
                    "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/scaleway:containers/ContainerLivenessProbe:ContainerLivenessProbe",
                    "description": "Defines how to check if the container is running.\n"
                },
                "localStorageLimit": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                },
                "localStorageLimitBytes": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in bytes).\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this container can scale to.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                },
                "memoryLimitBytes": {
                    "type": "integer",
                    "description": "The memory resources in bytes to allocate to each container.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of container instances running continuously.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Containers namespace ID of the container.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port to expose the container.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                },
                "publicEndpoint": {
                    "type": "string",
                    "description": "The native domain name of the container\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the container was created.\n"
                },
                "registryImage": {
                    "type": "string",
                    "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                    "deprecationMessage": "Please use image instead"
                },
                "registrySha256": {
                    "type": "string",
                    "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the container.\n"
                },
                "scalingOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/ContainerScalingOption:ContainerScalingOption"
                    },
                    "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                    "secret": true
                },
                "startupProbe": {
                    "$ref": "#/types/scaleway:containers/ContainerStartupProbe:ContainerStartupProbe",
                    "description": "Defines how to check if the container has started successfully."
                },
                "status": {
                    "type": "string",
                    "description": "The container status.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the container.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "required": [
                "cpuLimit",
                "cronStatus",
                "domainName",
                "environmentVariables",
                "errorMessage",
                "healthChecks",
                "httpOption",
                "httpsConnectionsOnly",
                "image",
                "livenessProbe",
                "localStorageLimit",
                "localStorageLimitBytes",
                "maxScale",
                "memoryLimit",
                "memoryLimitBytes",
                "minScale",
                "name",
                "namespaceId",
                "port",
                "publicEndpoint",
                "registryImage",
                "sandbox",
                "scalingOptions",
                "status",
                "timeout"
            ],
            "inputProperties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                    "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                },
                "description": {
                    "type": "string",
                    "description": "The description of the container.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                },
                "healthChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/ContainerHealthCheck:ContainerHealthCheck"
                    },
                    "description": "Health check configuration block of the container.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                },
                "httpsConnectionsOnly": {
                    "type": "boolean",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                },
                "image": {
                    "type": "string",
                    "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/scaleway:containers/ContainerLivenessProbe:ContainerLivenessProbe",
                    "description": "Defines how to check if the container is running.\n"
                },
                "localStorageLimit": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                },
                "localStorageLimitBytes": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in bytes).\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this container can scale to.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                },
                "memoryLimitBytes": {
                    "type": "integer",
                    "description": "The memory resources in bytes to allocate to each container.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of container instances running continuously.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Containers namespace ID of the container.\n",
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "The port to expose the container.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the container was created.\n",
                    "willReplaceOnChanges": true
                },
                "registryImage": {
                    "type": "string",
                    "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                    "deprecationMessage": "Please use image instead"
                },
                "registrySha256": {
                    "type": "string",
                    "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the container.\n"
                },
                "scalingOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:containers/ContainerScalingOption:ContainerScalingOption"
                    },
                    "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                    "secret": true
                },
                "startupProbe": {
                    "$ref": "#/types/scaleway:containers/ContainerStartupProbe:ContainerStartupProbe",
                    "description": "Defines how to check if the container has started successfully."
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the container.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "requiredInputs": [
                "namespaceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Container resources.\n",
                "properties": {
                    "args": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                    },
                    "commands": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                    },
                    "cpuLimit": {
                        "type": "integer",
                        "description": "The amount of vCPU computing resources to allocate to each container.\n"
                    },
                    "cronStatus": {
                        "type": "string",
                        "description": "The cron status of the container.\n"
                    },
                    "deploy": {
                        "type": "boolean",
                        "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                        "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the container.\n"
                    },
                    "domainName": {
                        "type": "string",
                        "description": "The native domain name of the container\n",
                        "deprecationMessage": "This attribute will be removed in the future, please use\u003cspan pulumi-lang-nodejs=\" publicEndpoint \" pulumi-lang-dotnet=\" PublicEndpoint \" pulumi-lang-go=\" publicEndpoint \" pulumi-lang-python=\" public_endpoint \" pulumi-lang-yaml=\" publicEndpoint \" pulumi-lang-java=\" publicEndpoint \"\u003e publicEndpoint \u003c/span\u003einstead"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                    },
                    "errorMessage": {
                        "type": "string",
                        "description": "The error message of the container.\n"
                    },
                    "healthChecks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:containers/ContainerHealthCheck:ContainerHealthCheck"
                        },
                        "description": "Health check configuration block of the container.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                    },
                    "httpOption": {
                        "type": "string",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                    },
                    "httpsConnectionsOnly": {
                        "type": "boolean",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                    },
                    "image": {
                        "type": "string",
                        "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                    },
                    "livenessProbe": {
                        "$ref": "#/types/scaleway:containers/ContainerLivenessProbe:ContainerLivenessProbe",
                        "description": "Defines how to check if the container is running.\n"
                    },
                    "localStorageLimit": {
                        "type": "integer",
                        "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                    },
                    "localStorageLimitBytes": {
                        "type": "integer",
                        "description": "Local storage limit of the container (in bytes).\n"
                    },
                    "maxScale": {
                        "type": "integer",
                        "description": "The maximum number of instances this container can scale to.\n"
                    },
                    "memoryLimit": {
                        "type": "integer",
                        "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                    },
                    "memoryLimitBytes": {
                        "type": "integer",
                        "description": "The memory resources in bytes to allocate to each container.\n"
                    },
                    "minScale": {
                        "type": "integer",
                        "description": "The minimum number of container instances running continuously.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The Containers namespace ID of the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "The port to expose the container.\n"
                    },
                    "privacy": {
                        "type": "string",
                        "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                    },
                    "publicEndpoint": {
                        "type": "string",
                        "description": "The native domain name of the container\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the container was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryImage": {
                        "type": "string",
                        "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                        "deprecationMessage": "Please use image instead"
                    },
                    "registrySha256": {
                        "type": "string",
                        "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                    },
                    "sandbox": {
                        "type": "string",
                        "description": "Execution environment of the container.\n"
                    },
                    "scalingOptions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:containers/ContainerScalingOption:ContainerScalingOption"
                        },
                        "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                        "secret": true
                    },
                    "startupProbe": {
                        "$ref": "#/types/scaleway:containers/ContainerStartupProbe:ContainerStartupProbe",
                        "description": "Defines how to check if the container has started successfully."
                    },
                    "status": {
                        "type": "string",
                        "description": "The container status.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the container.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/container:Container"
                }
            ]
        },
        "scaleway:containers/cron:Cron": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Cron`\" pulumi-lang-dotnet=\"`scaleway.containers.Cron`\" pulumi-lang-go=\"`containers.Cron`\" pulumi-lang-python=\"`containers.Cron`\" pulumi-lang-yaml=\"`scaleway.containers.Cron`\" pulumi-lang-java=\"`scaleway.containers.Cron`\"\u003e`scaleway.containers.Cron`\u003c/span\u003e has been deprecated and will be removed in the future.\nPlease use \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Trigger`\" pulumi-lang-dotnet=\"`scaleway.containers.Trigger`\" pulumi-lang-go=\"`containers.Trigger`\" pulumi-lang-python=\"`containers.Trigger`\" pulumi-lang-yaml=\"`scaleway.containers.Trigger`\" pulumi-lang-java=\"`scaleway.containers.Trigger`\"\u003e`scaleway.containers.Trigger`\u003c/span\u003e with a cron configuration instead.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Cron`\" pulumi-lang-dotnet=\"`scaleway.containers.Cron`\" pulumi-lang-go=\"`containers.Cron`\" pulumi-lang-python=\"`containers.Cron`\" pulumi-lang-yaml=\"`scaleway.containers.Cron`\" pulumi-lang-java=\"`scaleway.containers.Cron`\"\u003e`scaleway.containers.Cron`\u003c/span\u003e resource allows you to create and manage CRON triggers for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers CRON triggers [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/add-trigger-to-a-container/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\nThe following command allows you to add a CRON trigger to a Serverless Container.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container-with-cron-tf\",\n    namespaceId: main.id,\n});\nconst mainCron = new scaleway.containers.Cron(\"main\", {\n    containerId: mainContainer.id,\n    name: \"my-cron-name\",\n    schedule: \"5 4 1 * *\",\n    args: JSON.stringify({\n        address: {\n            city: \"Paris\",\n            country: \"FR\",\n        },\n        age: 23,\n        firstName: \"John\",\n        isAlive: true,\n        lastName: \"Smith\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container-with-cron-tf\",\n    namespace_id=main.id)\nmain_cron = scaleway.containers.Cron(\"main\",\n    container_id=main_container.id,\n    name=\"my-cron-name\",\n    schedule=\"5 4 1 * *\",\n    args=json.dumps({\n        \"address\": {\n            \"city\": \"Paris\",\n            \"country\": \"FR\",\n        },\n        \"age\": 23,\n        \"firstName\": \"John\",\n        \"isAlive\": True,\n        \"lastName\": \"Smith\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container-with-cron-tf\",\n        NamespaceId = main.Id,\n    });\n\n    var mainCron = new Scaleway.Containers.Cron(\"main\", new()\n    {\n        ContainerId = mainContainer.Id,\n        Name = \"my-cron-name\",\n        Schedule = \"5 4 1 * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"address\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"city\"] = \"Paris\",\n                [\"country\"] = \"FR\",\n            },\n            [\"age\"] = 23,\n            [\"firstName\"] = \"John\",\n            [\"isAlive\"] = true,\n            [\"lastName\"] = \"Smith\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainContainer, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container-with-cron-tf\"),\n\t\t\tNamespaceId: main.ID(),\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\"address\": map[string]interface{}{\n\t\t\t\t\"city\":    \"Paris\",\n\t\t\t\t\"country\": \"FR\",\n\t\t\t},\n\t\t\t\"age\":       23,\n\t\t\t\"firstName\": \"John\",\n\t\t\t\"isAlive\":   true,\n\t\t\t\"lastName\":  \"Smith\",\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 = containers.NewCron(ctx, \"main\", \u0026containers.CronArgs{\n\t\t\tContainerId: mainContainer.ID(),\n\t\t\tName:        pulumi.String(\"my-cron-name\"),\n\t\t\tSchedule:    pulumi.String(\"5 4 1 * *\"),\n\t\t\tArgs:        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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.Cron;\nimport com.pulumi.scaleway.containers.CronArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container-with-cron-tf\")\n            .namespaceId(main.id())\n            .build());\n\n        var mainCron = new Cron(\"mainCron\", CronArgs.builder()\n            .containerId(mainContainer.id())\n            .name(\"my-cron-name\")\n            .schedule(\"5 4 1 * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"address\", jsonObject(\n                        jsonProperty(\"city\", \"Paris\"),\n                        jsonProperty(\"country\", \"FR\")\n                    )),\n                    jsonProperty(\"age\", 23),\n                    jsonProperty(\"firstName\", \"John\"),\n                    jsonProperty(\"isAlive\", true),\n                    jsonProperty(\"lastName\", \"Smith\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container-with-cron-tf\n      namespaceId: ${main.id}\n  mainCron:\n    type: scaleway:containers:Cron\n    name: main\n    properties:\n      containerId: ${mainContainer.id}\n      name: my-cron-name\n      schedule: 5 4 1 * *\n      args:\n        fn::toJSON:\n          address:\n            city: Paris\n            country: FR\n          age: 23\n          firstName: John\n          isAlive: true\n          lastName: Smith\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer Cron can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/cron:Cron main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                },
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                },
                "status": {
                    "type": "string",
                    "description": "The CRON status.\n"
                }
            },
            "required": [
                "args",
                "containerId",
                "name",
                "schedule",
                "status"
            ],
            "inputProperties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                },
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n",
                    "willReplaceOnChanges": true
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                }
            },
            "requiredInputs": [
                "args",
                "containerId",
                "schedule"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cron resources.\n",
                "properties": {
                    "args": {
                        "type": "string",
                        "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                    },
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container to link to your CRON trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "schedule": {
                        "type": "string",
                        "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The CRON status.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/containerCron:ContainerCron"
                }
            ]
        },
        "scaleway:containers/domain:Domain": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Domain`\" pulumi-lang-dotnet=\"`scaleway.containers.Domain`\" pulumi-lang-go=\"`containers.Domain`\" pulumi-lang-python=\"`containers.Domain`\" pulumi-lang-yaml=\"`scaleway.containers.Domain`\" pulumi-lang-java=\"`scaleway.containers.Domain`\"\u003e`scaleway.containers.Domain`\u003c/span\u003e resource allows you to create and manage domain name bindings for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers domain [documentation](https://www.scaleway.com/en/docs/serverless-containers/how-to/add-a-custom-domain-to-a-container/) and the [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-domains-list-all-domain-name-bindings) for more information.\n\n## Example Usage\n\nThe commands below shows how to bind a custom domain name to a container.\n\n### Simple\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.containers.Container(\"app\", {});\nconst appDomain = new scaleway.containers.Domain(\"app\", {\n    containerId: app.id,\n    hostname: \"container.domain.tld\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.containers.Container(\"app\")\napp_domain = scaleway.containers.Domain(\"app\",\n    container_id=app.id,\n    hostname=\"container.domain.tld\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Containers.Container(\"app\");\n\n    var appDomain = new Scaleway.Containers.Domain(\"app\", new()\n    {\n        ContainerId = app.Id,\n        Hostname = \"container.domain.tld\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := containers.NewContainer(ctx, \"app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewDomain(ctx, \"app\", \u0026containers.DomainArgs{\n\t\t\tContainerId: app.ID(),\n\t\t\tHostname:    pulumi.String(\"container.domain.tld\"),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.Domain;\nimport com.pulumi.scaleway.containers.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Container(\"app\");\n\n        var appDomain = new Domain(\"appDomain\", DomainArgs.builder()\n            .containerId(app.id())\n            .hostname(\"container.domain.tld\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:containers:Container\n  appDomain:\n    type: scaleway:containers:Domain\n    name: app\n    properties:\n      containerId: ${app.id}\n      hostname: container.domain.tld\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete example with domain\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst app = new scaleway.containers.Container(\"app\", {\n    name: \"app\",\n    namespaceId: main.id,\n    image: \"nginx:latest\",\n    port: 80,\n    privacy: \"public\",\n    protocol: \"http1\",\n});\nconst appRecord = new scaleway.domain.Record(\"app\", {\n    dnsZone: \"scaleway-terraform.com\",\n    name: \"subdomain\",\n    type: \"CNAME\",\n    data: std.format({\n        input: \"%s.\",\n        args: [std.trimprefix({\n            input: app.publicEndpoint,\n            prefix: \"https://\",\n        }).result],\n    }).result,\n    ttl: 3600,\n});\nconst appDomain = new scaleway.containers.Domain(\"app\", {\n    containerId: app.id,\n    hostname: pulumi.interpolate`${appRecord.name}.${appRecord.dnsZone}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\napp = scaleway.containers.Container(\"app\",\n    name=\"app\",\n    namespace_id=main.id,\n    image=\"nginx:latest\",\n    port=80,\n    privacy=\"public\",\n    protocol=\"http1\")\napp_record = scaleway.domain.Record(\"app\",\n    dns_zone=\"scaleway-terraform.com\",\n    name=\"subdomain\",\n    type=\"CNAME\",\n    data=std.format(input=\"%s.\",\n        args=[std.trimprefix(input=app.public_endpoint,\n            prefix=\"https://\")[\"result\"]])[\"result\"],\n    ttl=3600)\napp_domain = scaleway.containers.Domain(\"app\",\n    container_id=app.id,\n    hostname=pulumi.Output.all(\n        name=app_record.name,\n        dns_zone=app_record.dns_zone\n).apply(lambda resolved_outputs: f\"{resolved_outputs['name']}.{resolved_outputs['dns_zone']}\")\n)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var app = new Scaleway.Containers.Container(\"app\", new()\n    {\n        Name = \"app\",\n        NamespaceId = main.Id,\n        Image = \"nginx:latest\",\n        Port = 80,\n        Privacy = \"public\",\n        Protocol = \"http1\",\n    });\n\n    var appRecord = new Scaleway.Domain.Record(\"app\", new()\n    {\n        DnsZone = \"scaleway-terraform.com\",\n        Name = \"subdomain\",\n        Type = \"CNAME\",\n        Data = Std.Format.Invoke(new()\n        {\n            Input = \"%s.\",\n            Args = new[]\n            {\n                Std.Trimprefix.Invoke(new()\n                {\n                    Input = app.PublicEndpoint,\n                    Prefix = \"https://\",\n                }).Result,\n            },\n        }).Result,\n        Ttl = 3600,\n    });\n\n    var appDomain = new Scaleway.Containers.Domain(\"app\", new()\n    {\n        ContainerId = app.Id,\n        Hostname = Output.Tuple(appRecord.Name, appRecord.DnsZone).Apply(values =\u003e\n        {\n            var name = values.Item1;\n            var dnsZone = values.Item2;\n            return $\"{name}.{dnsZone}\";\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := containers.NewContainer(ctx, \"app\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"app\"),\n\t\t\tNamespaceId: main.ID(),\n\t\t\tImage:       pulumi.String(\"nginx:latest\"),\n\t\t\tPort:        pulumi.Int(80),\n\t\t\tPrivacy:     pulumi.String(\"public\"),\n\t\t\tProtocol:    pulumi.String(\"http1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, map[string]interface{}{\n\t\t\t\"input\": \"%s.\",\n\t\t\t\"args\": []interface{}{\n\t\t\t\tstd.Trimprefix(ctx, map[string]interface{}{\n\t\t\t\t\t\"input\":  app.PublicEndpoint,\n\t\t\t\t\t\"prefix\": \"https://\",\n\t\t\t\t}, nil).Result,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappRecord, err := domain.NewRecord(ctx, \"app\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"scaleway-terraform.com\"),\n\t\t\tName:    pulumi.String(\"subdomain\"),\n\t\t\tType:    pulumi.String(\"CNAME\"),\n\t\t\tData:    invokeFormat.Result,\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewDomain(ctx, \"app\", \u0026containers.DomainArgs{\n\t\t\tContainerId: app.ID(),\n\t\t\tHostname: pulumi.All(appRecord.Name, appRecord.DnsZone).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tname := _args[0].(string)\n\t\t\t\tdnsZone := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(\"%v.%v\", name, dnsZone), 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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.scaleway.containers.Domain;\nimport com.pulumi.scaleway.containers.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var app = new Container(\"app\", ContainerArgs.builder()\n            .name(\"app\")\n            .namespaceId(main.id())\n            .image(\"nginx:latest\")\n            .port(80)\n            .privacy(\"public\")\n            .protocol(\"http1\")\n            .build());\n\n        var appRecord = new Record(\"appRecord\", RecordArgs.builder()\n            .dnsZone(\"scaleway-terraform.com\")\n            .name(\"subdomain\")\n            .type(\"CNAME\")\n            .data(StdFunctions.format(Map.ofEntries(\n                Map.entry(\"input\", \"%s.\"),\n                Map.entry(\"args\", Arrays.asList(StdFunctions.trimprefix(Map.ofEntries(\n                    Map.entry(\"input\", app.publicEndpoint()),\n                    Map.entry(\"prefix\", \"https://\")\n                )).result()))\n            )).result())\n            .ttl(3600)\n            .build());\n\n        var appDomain = new Domain(\"appDomain\", DomainArgs.builder()\n            .containerId(app.id())\n            .hostname(Output.tuple(appRecord.name(), appRecord.dnsZone()).applyValue(values -\u003e {\n                var name = values.t1;\n                var dnsZone = values.t2;\n                return String.format(\"%s.%s\", name,dnsZone);\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  app:\n    type: scaleway:containers:Container\n    properties:\n      name: app\n      namespaceId: ${main.id}\n      image: nginx:latest\n      port: 80\n      privacy: public\n      protocol: http1\n  appRecord:\n    type: scaleway:domain:Record\n    name: app\n    properties:\n      dnsZone: scaleway-terraform.com\n      name: subdomain\n      type: CNAME\n      data:\n        fn::invoke:\n          function: std:format\n          arguments:\n            input: '%s.'\n            args:\n              - fn::invoke:\n                  function: std:trimprefix\n                  arguments:\n                    input: ${app.publicEndpoint}\n                    prefix: https://\n                  return: result\n          return: result\n      ttl: 3600\n  appDomain:\n    type: scaleway:containers:Domain\n    name: app\n    properties:\n      containerId: ${app.id}\n      hostname: ${appRecord.name}.${appRecord.dnsZone}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer domain binding can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/domain:Domain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the container exists.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Deprecated) The URL used to query the container.\n",
                    "deprecationMessage": "URL won't be displayed on v1"
                }
            },
            "required": [
                "containerId",
                "hostname",
                "url"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the container exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "containerId",
                "hostname"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Domain resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname with a CNAME record.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the container exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "url": {
                        "type": "string",
                        "description": "(Deprecated) The URL used to query the container.\n",
                        "deprecationMessage": "URL won't be displayed on v1"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/containerDomain:ContainerDomain"
                }
            ]
        },
        "scaleway:containers/namespace:Namespace": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Namespace`\" pulumi-lang-dotnet=\"`scaleway.containers.Namespace`\" pulumi-lang-go=\"`containers.Namespace`\" pulumi-lang-python=\"`containers.Namespace`\" pulumi-lang-yaml=\"`scaleway.containers.Namespace`\" pulumi-lang-java=\"`scaleway.containers.Namespace`\"\u003e`scaleway.containers.Namespace`\u003c/span\u003e resource allows you to manage Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers namespace [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/create-manage-delete-containers-namespace/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-namespaces-list-all-your-namespaces) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {\n    name: \"main-container-namespace\",\n    description: \"Main container namespace\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\",\n    name=\"main-container-namespace\",\n    description=\"Main container namespace\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"main-container-namespace\",\n        Description = \"Main container namespace\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-container-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main container namespace\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\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.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-container-namespace\")\n            .description(\"Main container namespace\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n    properties:\n      name: main-container-namespace\n      description: Main container namespace\n      tags:\n        - tag1\n        - tag2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainers namespaces can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/namespace:Namespace main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "destroyRegistry": {
                    "type": "boolean",
                    "description": "Destroy registry on deletion",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID with which the namespace is associated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "registryEndpoint": {
                    "type": "string",
                    "description": "(Deprecated) The registry endpoint of the namespace.\n",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "registryNamespaceId": {
                    "type": "string",
                    "description": "(Deprecated) The registry namespace ID of the namespace.\n",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "registryEndpoint",
                "registryNamespaceId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "destroyRegistry": {
                    "type": "boolean",
                    "description": "Destroy registry on deletion",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Namespace resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the namespace.\n"
                    },
                    "destroyRegistry": {
                        "type": "boolean",
                        "description": "Destroy registry on deletion",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The environment variables of the namespace.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID with which the namespace is associated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryEndpoint": {
                        "type": "string",
                        "description": "(Deprecated) The registry endpoint of the namespace.\n",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "registryNamespaceId": {
                        "type": "string",
                        "description": "(Deprecated) The registry namespace ID of the namespace.\n",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The secret environment variables of the namespace.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the namespace.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/containerNamespace:ContainerNamespace"
                }
            ]
        },
        "scaleway:containers/token:Token": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Token`\" pulumi-lang-dotnet=\"`scaleway.containers.Token`\" pulumi-lang-go=\"`containers.Token`\" pulumi-lang-python=\"`containers.Token`\" pulumi-lang-yaml=\"`scaleway.containers.Token`\" pulumi-lang-java=\"`scaleway.containers.Token`\"\u003e`scaleway.containers.Token`\u003c/span\u003e has been deprecated and will no longer be supported in v1 of the API.\nPlease use IAM authentication instead. You will find an implementation example in the IAM authentication section of the Container documentation.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Token`\" pulumi-lang-dotnet=\"`scaleway.containers.Token`\" pulumi-lang-go=\"`containers.Token`\" pulumi-lang-python=\"`containers.Token`\" pulumi-lang-yaml=\"`scaleway.containers.Token`\" pulumi-lang-java=\"`scaleway.containers.Token`\"\u003e`scaleway.containers.Token`\u003c/span\u003e resource allows you to create and manage authentication tokens for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers tokens [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/create-auth-token-from-console/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-tokens-list-all-tokens) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {name: \"test-container-token-ns\"});\nconst mainContainer = new scaleway.containers.Container(\"main\", {namespaceId: main.id});\n// Namespace Token\nconst namespace = new scaleway.containers.Token(\"namespace\", {\n    namespaceId: main.id,\n    expiresAt: \"2022-10-18T11:35:15+02:00\",\n});\n// Container Token\nconst container = new scaleway.containers.Token(\"container\", {containerId: mainContainer.id});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\", name=\"test-container-token-ns\")\nmain_container = scaleway.containers.Container(\"main\", namespace_id=main.id)\n# Namespace Token\nnamespace = scaleway.containers.Token(\"namespace\",\n    namespace_id=main.id,\n    expires_at=\"2022-10-18T11:35:15+02:00\")\n# Container Token\ncontainer = scaleway.containers.Token(\"container\", container_id=main_container.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"test-container-token-ns\",\n    });\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        NamespaceId = main.Id,\n    });\n\n    // Namespace Token\n    var @namespace = new Scaleway.Containers.Token(\"namespace\", new()\n    {\n        NamespaceId = main.Id,\n        ExpiresAt = \"2022-10-18T11:35:15+02:00\",\n    });\n\n    // Container Token\n    var container = new Scaleway.Containers.Token(\"container\", new()\n    {\n        ContainerId = mainContainer.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-container-token-ns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainContainer, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Namespace Token\n\t\t_, err = containers.NewToken(ctx, \"namespace\", \u0026containers.TokenArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tExpiresAt:   pulumi.String(\"2022-10-18T11:35:15+02:00\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Container Token\n\t\t_, err = containers.NewToken(ctx, \"container\", \u0026containers.TokenArgs{\n\t\t\tContainerId: mainContainer.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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.Token;\nimport com.pulumi.scaleway.containers.TokenArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-container-token-ns\")\n            .build());\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .namespaceId(main.id())\n            .build());\n\n        // Namespace Token\n        var namespace = new Token(\"namespace\", TokenArgs.builder()\n            .namespaceId(main.id())\n            .expiresAt(\"2022-10-18T11:35:15+02:00\")\n            .build());\n\n        // Container Token\n        var container = new Token(\"container\", TokenArgs.builder()\n            .containerId(mainContainer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n    properties:\n      name: test-container-token-ns\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      namespaceId: ${main.id}\n  # Namespace Token\n  namespace:\n    type: scaleway:containers:Token\n    properties:\n      namespaceId: ${main.id}\n      expiresAt: 2022-10-18T11:35:15+02:00\n  # Container Token\n  container:\n    type: scaleway:containers:Token\n    properties:\n      containerId: ${mainContainer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTokens can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/token:Token main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Containers namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The token.\n",
                    "secret": true
                }
            },
            "required": [
                "value"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Containers namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Token resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The expiration date of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The unique identifier of the Containers namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "value": {
                        "type": "string",
                        "description": "The token.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/containerToken:ContainerToken"
                }
            ]
        },
        "scaleway:containers/trigger:Trigger": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Trigger`\" pulumi-lang-dotnet=\"`scaleway.containers.Trigger`\" pulumi-lang-go=\"`containers.Trigger`\" pulumi-lang-python=\"`containers.Trigger`\" pulumi-lang-yaml=\"`scaleway.containers.Trigger`\" pulumi-lang-java=\"`scaleway.containers.Trigger`\"\u003e`scaleway.containers.Trigger`\u003c/span\u003e resource allows you to create and manage triggers for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers triggers [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/add-trigger-to-a-container/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\n### SQS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-sqs-trigger\",\n    destinationConfig: {\n        httpPath: \"/\",\n        httpMethod: \"get\",\n    },\n    sqs: {\n        endpoint: mainScalewayMnqSqsQueue.sqsEndpoint,\n        queueUrl: mainScalewayMnqSqsQueue.url,\n        accessKey: mainScalewayMnqSqsCredentials.accessKey,\n        secretKey: mainScalewayMnqSqsCredentials.secretKey,\n        region: mainScalewayMnqSqs.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-sqs-trigger\",\n    destination_config={\n        \"http_path\": \"/\",\n        \"http_method\": \"get\",\n    },\n    sqs={\n        \"endpoint\": main_scaleway_mnq_sqs_queue[\"sqsEndpoint\"],\n        \"queue_url\": main_scaleway_mnq_sqs_queue[\"url\"],\n        \"access_key\": main_scaleway_mnq_sqs_credentials[\"accessKey\"],\n        \"secret_key\": main_scaleway_mnq_sqs_credentials[\"secretKey\"],\n        \"region\": main_scaleway_mnq_sqs[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-sqs-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/\",\n            HttpMethod = \"get\",\n        },\n        Sqs = new Scaleway.Containers.Inputs.TriggerSqsArgs\n        {\n            Endpoint = mainScalewayMnqSqsQueue.SqsEndpoint,\n            QueueUrl = mainScalewayMnqSqsQueue.Url,\n            AccessKey = mainScalewayMnqSqsCredentials.AccessKey,\n            SecretKey = mainScalewayMnqSqsCredentials.SecretKey,\n            Region = mainScalewayMnqSqs.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-sqs-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/\"),\n\t\t\t\tHttpMethod: pulumi.String(\"get\"),\n\t\t\t},\n\t\t\tSqs: \u0026containers.TriggerSqsArgs{\n\t\t\t\tEndpoint:  pulumi.Any(mainScalewayMnqSqsQueue.SqsEndpoint),\n\t\t\t\tQueueUrl:  pulumi.Any(mainScalewayMnqSqsQueue.Url),\n\t\t\t\tAccessKey: pulumi.Any(mainScalewayMnqSqsCredentials.AccessKey),\n\t\t\t\tSecretKey: pulumi.Any(mainScalewayMnqSqsCredentials.SecretKey),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqSqs.Region),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerSqsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-sqs-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/\")\n                .httpMethod(\"get\")\n                .build())\n            .sqs(TriggerSqsArgs.builder()\n                .endpoint(mainScalewayMnqSqsQueue.sqsEndpoint())\n                .queueUrl(mainScalewayMnqSqsQueue.url())\n                .accessKey(mainScalewayMnqSqsCredentials.accessKey())\n                .secretKey(mainScalewayMnqSqsCredentials.secretKey())\n                .region(mainScalewayMnqSqs.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-sqs-trigger\n      destinationConfig:\n        httpPath: /\n        httpMethod: get\n      sqs:\n        endpoint: ${mainScalewayMnqSqsQueue.sqsEndpoint}\n        queueUrl: ${mainScalewayMnqSqsQueue.url}\n        accessKey: ${mainScalewayMnqSqsCredentials.accessKey}\n        secretKey: ${mainScalewayMnqSqsCredentials.secretKey}\n        region: ${mainScalewayMnqSqs.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### NATS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-nats-trigger\",\n    destinationConfig: {\n        httpPath: \"/ping\",\n        httpMethod: \"get\",\n    },\n    nats: {\n        subject: \"TestSubject\",\n        serverUrls: [mainScalewayMnqNatsAccount.endpoint],\n        credentialsFileContent: mainScalewayMnqNatsCredentials.file,\n        region: mainScalewayMnqNatsAccount.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-nats-trigger\",\n    destination_config={\n        \"http_path\": \"/ping\",\n        \"http_method\": \"get\",\n    },\n    nats={\n        \"subject\": \"TestSubject\",\n        \"server_urls\": [main_scaleway_mnq_nats_account[\"endpoint\"]],\n        \"credentials_file_content\": main_scaleway_mnq_nats_credentials[\"file\"],\n        \"region\": main_scaleway_mnq_nats_account[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-nats-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/ping\",\n            HttpMethod = \"get\",\n        },\n        Nats = new Scaleway.Containers.Inputs.TriggerNatsArgs\n        {\n            Subject = \"TestSubject\",\n            ServerUrls = new[]\n            {\n                mainScalewayMnqNatsAccount.Endpoint,\n            },\n            CredentialsFileContent = mainScalewayMnqNatsCredentials.File,\n            Region = mainScalewayMnqNatsAccount.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-nats-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/ping\"),\n\t\t\t\tHttpMethod: pulumi.String(\"get\"),\n\t\t\t},\n\t\t\tNats: \u0026containers.TriggerNatsArgs{\n\t\t\t\tSubject: pulumi.String(\"TestSubject\"),\n\t\t\t\tServerUrls: pulumi.StringArray{\n\t\t\t\t\tmainScalewayMnqNatsAccount.Endpoint,\n\t\t\t\t},\n\t\t\t\tCredentialsFileContent: pulumi.Any(mainScalewayMnqNatsCredentials.File),\n\t\t\t\tRegion:                 pulumi.Any(mainScalewayMnqNatsAccount.Region),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerNatsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-nats-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/ping\")\n                .httpMethod(\"get\")\n                .build())\n            .nats(TriggerNatsArgs.builder()\n                .subject(\"TestSubject\")\n                .serverUrls(mainScalewayMnqNatsAccount.endpoint())\n                .credentialsFileContent(mainScalewayMnqNatsCredentials.file())\n                .region(mainScalewayMnqNatsAccount.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-nats-trigger\n      destinationConfig:\n        httpPath: /ping\n        httpMethod: get\n      nats:\n        subject: TestSubject\n        serverUrls:\n          - ${mainScalewayMnqNatsAccount.endpoint}\n        credentialsFileContent: ${mainScalewayMnqNatsCredentials.file}\n        region: ${mainScalewayMnqNatsAccount.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cron\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-cron-trigger\",\n    destinationConfig: {\n        httpPath: \"/patch/here\",\n        httpMethod: \"patch\",\n    },\n    cron: {\n        schedule: \"5 4 1 * *\",\n        timezone: \"Europe/Paris\",\n        body: \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n        headers: {\n            \"Content-Length\": \"45\",\n            \"Content-Type\": \"application/json\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-cron-trigger\",\n    destination_config={\n        \"http_path\": \"/patch/here\",\n        \"http_method\": \"patch\",\n    },\n    cron={\n        \"schedule\": \"5 4 1 * *\",\n        \"timezone\": \"Europe/Paris\",\n        \"body\": \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n        \"headers\": {\n            \"Content-Length\": \"45\",\n            \"Content-Type\": \"application/json\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-cron-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/patch/here\",\n            HttpMethod = \"patch\",\n        },\n        Cron = new Scaleway.Containers.Inputs.TriggerCronArgs\n        {\n            Schedule = \"5 4 1 * *\",\n            Timezone = \"Europe/Paris\",\n            Body = \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n            Headers = \n            {\n                { \"Content-Length\", \"45\" },\n                { \"Content-Type\", \"application/json\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-cron-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/patch/here\"),\n\t\t\t\tHttpMethod: pulumi.String(\"patch\"),\n\t\t\t},\n\t\t\tCron: \u0026containers.TriggerCronArgs{\n\t\t\t\tSchedule: pulumi.String(\"5 4 1 * *\"),\n\t\t\t\tTimezone: pulumi.String(\"Europe/Paris\"),\n\t\t\t\tBody:     pulumi.String(\"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\"),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Length\": pulumi.String(\"45\"),\n\t\t\t\t\t\"Content-Type\":   pulumi.String(\"application/json\"),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerCronArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-cron-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/patch/here\")\n                .httpMethod(\"patch\")\n                .build())\n            .cron(TriggerCronArgs.builder()\n                .schedule(\"5 4 1 * *\")\n                .timezone(\"Europe/Paris\")\n                .body(\"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\")\n                .headers(Map.ofEntries(\n                    Map.entry(\"Content-Length\", \"45\"),\n                    Map.entry(\"Content-Type\", \"application/json\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-cron-trigger\n      destinationConfig:\n        httpPath: /patch/here\n        httpMethod: patch\n      cron:\n        schedule: 5 4 1 * *\n        timezone: Europe/Paris\n        body: '{\"message\": \"This is the content to send to the container.\"}'\n        headers:\n          Content-Length: 45\n          Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer Triggers can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:containers/trigger:Trigger main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n"
                },
                "cron": {
                    "$ref": "#/types/scaleway:containers/TriggerCron:TriggerCron",
                    "description": "The configuration for the cron source of the trigger\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "destinationConfig": {
                    "$ref": "#/types/scaleway:containers/TriggerDestinationConfig:TriggerDestinationConfig",
                    "description": "The configuration of the destination to trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:containers/TriggerNats:TriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "sqs": {
                    "$ref": "#/types/scaleway:containers/TriggerSqs:TriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the trigger.\n"
                }
            },
            "required": [
                "containerId",
                "destinationConfig",
                "name"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n",
                    "willReplaceOnChanges": true
                },
                "cron": {
                    "$ref": "#/types/scaleway:containers/TriggerCron:TriggerCron",
                    "description": "The configuration for the cron source of the trigger\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "destinationConfig": {
                    "$ref": "#/types/scaleway:containers/TriggerDestinationConfig:TriggerDestinationConfig",
                    "description": "The configuration of the destination to trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:containers/TriggerNats:TriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "sqs": {
                    "$ref": "#/types/scaleway:containers/TriggerSqs:TriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the trigger.\n"
                }
            },
            "requiredInputs": [
                "containerId",
                "destinationConfig"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Trigger resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "cron": {
                        "$ref": "#/types/scaleway:containers/TriggerCron:TriggerCron",
                        "description": "The configuration for the cron source of the trigger\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the trigger.\n"
                    },
                    "destinationConfig": {
                        "$ref": "#/types/scaleway:containers/TriggerDestinationConfig:TriggerDestinationConfig",
                        "description": "The configuration of the destination to trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                    },
                    "nats": {
                        "$ref": "#/types/scaleway:containers/TriggerNats:TriggerNats",
                        "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sqs": {
                        "$ref": "#/types/scaleway:containers/TriggerSqs:TriggerSqs",
                        "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the trigger.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/containerTrigger:ContainerTrigger"
                }
            ]
        },
        "scaleway:databases/acl:Acl": {
            "description": "Creates and manages Scaleway Database instance authorized IPs.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/#acl-rules-allowed-ips).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainAcl = new scaleway.databases.Acl(\"main\", {\n    instanceId: main.id,\n    aclRules: [{\n        ip: \"1.2.3.4/32\",\n        description: \"foo\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_acl = scaleway.databases.Acl(\"main\",\n    instance_id=main.id,\n    acl_rules=[{\n        \"ip\": \"1.2.3.4/32\",\n        \"description\": \"foo\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainAcl = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        InstanceId = main.Id,\n        AclRules = new[]\n        {\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"1.2.3.4/32\",\n                Description = \"foo\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewAcl(ctx, \"main\", \u0026databases.AclArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tAclRules: databases.AclAclRuleArray{\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"foo\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Acl;\nimport com.pulumi.scaleway.databases.AclArgs;\nimport com.pulumi.scaleway.databases.inputs.AclAclRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainAcl = new Acl(\"mainAcl\", AclArgs.builder()\n            .instanceId(main.id())\n            .aclRules(AclAclRuleArgs.builder()\n                .ip(\"1.2.3.4/32\")\n                .description(\"foo\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainAcl:\n    type: scaleway:databases:Acl\n    name: main\n    properties:\n      instanceId: ${main.id}\n      aclRules:\n        - ip: 1.2.3.4/32\n          description: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple ACL Rules\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Acl(\"main\", {\n    instanceId: mainScalewayRdbInstance.id,\n    aclRules: [\n        {\n            ip: \"1.2.3.4/32\",\n            description: \"Office IP\",\n        },\n        {\n            ip: \"5.6.7.8/32\",\n            description: \"Home IP\",\n        },\n        {\n            ip: \"10.0.0.0/24\",\n            description: \"Internal network\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Acl(\"main\",\n    instance_id=main_scaleway_rdb_instance[\"id\"],\n    acl_rules=[\n        {\n            \"ip\": \"1.2.3.4/32\",\n            \"description\": \"Office IP\",\n        },\n        {\n            \"ip\": \"5.6.7.8/32\",\n            \"description\": \"Home IP\",\n        },\n        {\n            \"ip\": \"10.0.0.0/24\",\n            \"description\": \"Internal network\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        InstanceId = mainScalewayRdbInstance.Id,\n        AclRules = new[]\n        {\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"1.2.3.4/32\",\n                Description = \"Office IP\",\n            },\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"5.6.7.8/32\",\n                Description = \"Home IP\",\n            },\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"10.0.0.0/24\",\n                Description = \"Internal network\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewAcl(ctx, \"main\", \u0026databases.AclArgs{\n\t\t\tInstanceId: pulumi.Any(mainScalewayRdbInstance.Id),\n\t\t\tAclRules: databases.AclAclRuleArray{\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"Office IP\"),\n\t\t\t\t},\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"5.6.7.8/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"Home IP\"),\n\t\t\t\t},\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"10.0.0.0/24\"),\n\t\t\t\t\tDescription: pulumi.String(\"Internal network\"),\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.scaleway.databases.Acl;\nimport com.pulumi.scaleway.databases.AclArgs;\nimport com.pulumi.scaleway.databases.inputs.AclAclRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Acl(\"main\", AclArgs.builder()\n            .instanceId(mainScalewayRdbInstance.id())\n            .aclRules(            \n                AclAclRuleArgs.builder()\n                    .ip(\"1.2.3.4/32\")\n                    .description(\"Office IP\")\n                    .build(),\n                AclAclRuleArgs.builder()\n                    .ip(\"5.6.7.8/32\")\n                    .description(\"Home IP\")\n                    .build(),\n                AclAclRuleArgs.builder()\n                    .ip(\"10.0.0.0/24\")\n                    .description(\"Internal network\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Acl\n    properties:\n      instanceId: ${mainScalewayRdbInstance.id}\n      aclRules:\n        - ip: 1.2.3.4/32\n          description: Office IP\n        - ip: 5.6.7.8/32\n          description: Home IP\n        - ip: 10.0.0.0/24\n          description: Internal network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Dynamic ACL Rules with Variables\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\n// Map of allowed IPs with descriptions\nconst allowedIps = config.getObject\u003cRecord\u003cstring, string\u003e\u003e(\"allowedIps\") || {\n    \"1.2.3.4/32\": \"Office IP\",\n    \"10.0.0.0/24\": \"Internal network\",\n    \"5.6.7.8/32\": \"Home IP\",\n};\nconst main = new scaleway.databases.Acl(\"main\", {\n    aclRules: Object.entries(allowedIps).sort().map(([key, entry]) =\u003e ({\n        ip: key,\n        description: entry,\n    })),\n    instanceId: mainScalewayRdbInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\n# Map of allowed IPs with descriptions\nallowed_ips = config.get_object(\"allowedIps\")\nif allowed_ips is None:\n    allowed_ips = {\n        \"1.2.3.4/32\": \"Office IP\",\n        \"10.0.0.0/24\": \"Internal network\",\n        \"5.6.7.8/32\": \"Home IP\",\n    }\nmain = scaleway.databases.Acl(\"main\",\n    acl_rules=[{\n        \"ip\": key,\n        \"description\": entry,\n    } for key, entry in sorted(allowed_ips.items())],\n    instance_id=main_scaleway_rdb_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    // Map of allowed IPs with descriptions\n    var allowedIps = config.GetObject\u003cDictionary\u003cstring, string\u003e\u003e(\"allowedIps\") ?? \n    {\n        { \"1.2.3.4/32\", \"Office IP\" },\n        { \"10.0.0.0/24\", \"Internal network\" },\n        { \"5.6.7.8/32\", \"Home IP\" },\n    };\n    var main = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        AclRules = allowedIps.Select(pair =\u003e new { pair.Key, pair.Value }).Select(entry =\u003e \n        {\n            return new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = key,\n                Description = entry,\n            };\n        }).ToList(),\n        InstanceId = mainScalewayRdbInstance.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/acl:Acl acl01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "aclRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/AclAclRule:AclAclRule"
                    },
                    "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n"
                }
            },
            "required": [
                "aclRules",
                "instanceId"
            ],
            "inputProperties": {
                "aclRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/AclAclRule:AclAclRule"
                    },
                    "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "aclRules",
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Acl resources.\n",
                "properties": {
                    "aclRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:databases/AclAclRule:AclAclRule"
                        },
                        "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the Database Instance should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databaseAcl:DatabaseAcl"
                }
            ]
        },
        "scaleway:databases/database:Database": {
            "description": "Creates and manages databases.\nFor more information, refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"my-new-database\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"my-new-database\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"my-new-database\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"my-new-database\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"my-new-database\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: my-new-database\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRDB Database can be imported using the `{region}/{id}/{DBNAME}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/database:Database rdb01_mydb fr-par/11111111-1111-1111-1111-111111111111/mydb\n```\n\n",
            "properties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n"
                },
                "managed": {
                    "type": "boolean",
                    "description": "Whether the database is managed or not.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-new-database`).\n"
                },
                "owner": {
                    "type": "string",
                    "description": "The name of the owner of the database.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "size": {
                    "type": "string",
                    "description": "Size of the database (in bytes).\n"
                }
            },
            "required": [
                "instanceId",
                "managed",
                "name",
                "owner",
                "size"
            ],
            "inputProperties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-new-database`).\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Database resources.\n",
                "properties": {
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n",
                        "willReplaceOnChanges": true
                    },
                    "managed": {
                        "type": "boolean",
                        "description": "Whether the database is managed or not.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-new-database`).\n",
                        "willReplaceOnChanges": true
                    },
                    "owner": {
                        "type": "string",
                        "description": "The name of the owner of the database.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "string",
                        "description": "Size of the database (in bytes).\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/database:Database"
                }
            ]
        },
        "scaleway:databases/databaseBackup:DatabaseBackup": {
            "description": "Creates and manages database backups.\nFor more information, refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"database\",\n});\nconst mainDatabaseBackup = new scaleway.databases.DatabaseBackup(\"main\", {\n    instanceId: main.id,\n    databaseName: mainDatabase.name,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"database\")\nmain_database_backup = scaleway.databases.DatabaseBackup(\"main\",\n    instance_id=main.id,\n    database_name=main_database.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"database\",\n    });\n\n    var mainDatabaseBackup = new Scaleway.Databases.DatabaseBackup(\"main\", new()\n    {\n        InstanceId = main.Id,\n        DatabaseName = mainDatabase.Name,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDatabase, err := databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"database\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewDatabaseBackup(ctx, \"main\", \u0026databases.DatabaseBackupArgs{\n\t\t\tInstanceId:   main.ID(),\n\t\t\tDatabaseName: mainDatabase.Name,\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport com.pulumi.scaleway.databases.DatabaseBackup;\nimport com.pulumi.scaleway.databases.DatabaseBackupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"database\")\n            .build());\n\n        var mainDatabaseBackup = new DatabaseBackup(\"mainDatabaseBackup\", DatabaseBackupArgs.builder()\n            .instanceId(main.id())\n            .databaseName(mainDatabase.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: database\n  mainDatabaseBackup:\n    type: scaleway:databases:DatabaseBackup\n    name: main\n    properties:\n      instanceId: ${main.id}\n      databaseName: ${mainDatabase.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.DatabaseBackup(\"main\", {\n    instanceId: mainScalewayRdbInstance.id,\n    databaseName: mainScalewayRdbDatabase.name,\n    expiresAt: \"2022-06-16T07:48:44Z\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.DatabaseBackup(\"main\",\n    instance_id=main_scaleway_rdb_instance[\"id\"],\n    database_name=main_scaleway_rdb_database[\"name\"],\n    expires_at=\"2022-06-16T07:48:44Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.DatabaseBackup(\"main\", new()\n    {\n        InstanceId = mainScalewayRdbInstance.Id,\n        DatabaseName = mainScalewayRdbDatabase.Name,\n        ExpiresAt = \"2022-06-16T07:48:44Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewDatabaseBackup(ctx, \"main\", \u0026databases.DatabaseBackupArgs{\n\t\t\tInstanceId:   pulumi.Any(mainScalewayRdbInstance.Id),\n\t\t\tDatabaseName: pulumi.Any(mainScalewayRdbDatabase.Name),\n\t\t\tExpiresAt:    pulumi.String(\"2022-06-16T07:48:44Z\"),\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.scaleway.databases.DatabaseBackup;\nimport com.pulumi.scaleway.databases.DatabaseBackupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new DatabaseBackup(\"main\", DatabaseBackupArgs.builder()\n            .instanceId(mainScalewayRdbInstance.id())\n            .databaseName(mainScalewayRdbDatabase.name())\n            .expiresAt(\"2022-06-16T07:48:44Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:DatabaseBackup\n    properties:\n      instanceId: ${mainScalewayRdbInstance.id}\n      databaseName: ${mainScalewayRdbDatabase.name}\n      expiresAt: 2022-06-16T07:48:44Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabases can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/databaseBackup:DatabaseBackup mybackup fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Creation date (Format ISO 8601).\n"
                },
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database of this backup."
                },
                "downloadUrl": {
                    "type": "string",
                    "description": "URL you can download the backup from (when exporting)."
                },
                "downloadUrlExpiresAt": {
                    "type": "string",
                    "description": "Expiration date of the download link (Format ISO 8601)."
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n"
                },
                "instanceName": {
                    "type": "string",
                    "description": "Name of the instance of the backup.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-database`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "sameRegion": {
                    "type": "boolean",
                    "description": "Whether the backup is stored in the same region as the source instance."
                },
                "size": {
                    "type": "integer",
                    "description": "Size of the backup (in bytes).\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the backup (creating, ready, restoring, deleting, error, exporting, locked)."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated date (Format ISO 8601).\n"
                }
            },
            "required": [
                "createdAt",
                "databaseName",
                "downloadUrl",
                "downloadUrlExpiresAt",
                "instanceId",
                "instanceName",
                "name",
                "sameRegion",
                "size",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database of this backup.",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-database`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "databaseName",
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseBackup resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Creation date (Format ISO 8601).\n"
                    },
                    "databaseName": {
                        "type": "string",
                        "description": "Name of the database of this backup.",
                        "willReplaceOnChanges": true
                    },
                    "downloadUrl": {
                        "type": "string",
                        "description": "URL you can download the backup from (when exporting)."
                    },
                    "downloadUrlExpiresAt": {
                        "type": "string",
                        "description": "Expiration date of the download link (Format ISO 8601)."
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n",
                        "willReplaceOnChanges": true
                    },
                    "instanceName": {
                        "type": "string",
                        "description": "Name of the instance of the backup.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-database`).\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "sameRegion": {
                        "type": "boolean",
                        "description": "Whether the backup is stored in the same region as the source instance."
                    },
                    "size": {
                        "type": "integer",
                        "description": "Size of the backup (in bytes).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the backup (creating, ready, restoring, deleting, error, exporting, locked)."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Updated date (Format ISO 8601).\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databaseBackup:DatabaseBackup"
                }
            ]
        },
        "scaleway:databases/instance:Instance": {
            "description": "Creates and manages Scaleway Database Instances.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Example Basic\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    encryptionAtRest: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Example Basic\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    encryption_at_rest=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Example Basic\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        EncryptionAtRest = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Example Basic\n\t\t_, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:             pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:         pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:           pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:      pulumi.Bool(true),\n\t\t\tDisableBackup:    pulumi.Bool(true),\n\t\t\tUserName:         pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:         pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tEncryptionAtRest: 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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Example Basic\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .encryptionAtRest(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Example Basic\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      encryptionAtRest: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Example Engine Upgrade\n// Initial creation with PostgreSQL 14\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"my-database\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nexport const upgradableVersions = main.upgradableVersions;\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Example Engine Upgrade\n# Initial creation with PostgreSQL 14\nmain = scaleway.databases.Instance(\"main\",\n    name=\"my-database\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npulumi.export(\"upgradableVersions\", main.upgradable_versions)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Example Engine Upgrade\n    // Initial creation with PostgreSQL 14\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"my-database\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"upgradableVersions\"] = main.UpgradableVersions,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Example Engine Upgrade\n\t\t// Initial creation with PostgreSQL 14\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"my-database\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"upgradableVersions\", main.UpgradableVersions)\n\t\treturn nil\n\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Example Engine Upgrade\n        // Initial creation with PostgreSQL 14\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"my-database\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        ctx.export(\"upgradableVersions\", main.upgradableVersions());\n    }\n}\n```\n```yaml\nresources:\n  ### Example Engine Upgrade\n\n  # Initial creation with PostgreSQL 14\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: my-database\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_user\n      password: thiZ_is_v\u0026ry_s3cret\noutputs:\n  # Check available versions for upgrade\n  upgradableVersions: ${main.upgradableVersions}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/instance:Instance rdb01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backupSameRegion": {
                    "type": "boolean",
                    "description": "Boolean to store logical backups in the same region as the database instance"
                },
                "backupScheduleFrequency": {
                    "type": "integer",
                    "description": "Backup schedule frequency in hours"
                },
                "backupScheduleRetention": {
                    "type": "integer",
                    "description": "Backup schedule retention in days"
                },
                "certificate": {
                    "type": "string",
                    "description": "Certificate of the Database Instance.\n"
                },
                "disableBackup": {
                    "type": "boolean",
                    "description": "Disable automated backup for the database instance"
                },
                "encryptionAtRest": {
                    "type": "boolean",
                    "description": "Enable or disable encryption at rest for the Database Instance.\n"
                },
                "endpointIp": {
                    "type": "string",
                    "description": "(Deprecated) The IP of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                    "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                },
                "endpointPort": {
                    "type": "integer",
                    "description": "(Deprecated) The port of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                    "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                },
                "engine": {
                    "type": "string",
                    "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                },
                "initSettings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set at database initialisation."
                },
                "isHaCluster": {
                    "type": "boolean",
                    "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "loadBalancer": {
                    "$ref": "#/types/scaleway:databases/InstanceLoadBalancer:InstanceLoadBalancer",
                    "description": "List of Load Balancer endpoints of the Database Instance.\n"
                },
                "logsPolicy": {
                    "$ref": "#/types/scaleway:databases/InstanceLogsPolicy:InstanceLogsPolicy",
                    "description": "Logs policy configuration"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the Database Instance is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/InstancePrivateIp:InstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:databases/InstancePrivateNetwork:InstancePrivateNetwork",
                    "description": "List of Private Networks endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n"
                },
                "readReplicas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/InstanceReadReplica:InstanceReadReplica"
                    },
                    "description": "List of read replicas of the Database Instance.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Database Instance should be created.\n"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set on a running instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Database Instance.\n"
                },
                "upgradableVersions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/InstanceUpgradableVersion:InstanceUpgradableVersion"
                    },
                    "description": "List of available engine versions for upgrade. Each version contains:\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                }
            },
            "required": [
                "backupSameRegion",
                "backupScheduleFrequency",
                "backupScheduleRetention",
                "certificate",
                "endpointIp",
                "endpointPort",
                "engine",
                "loadBalancer",
                "logsPolicy",
                "name",
                "nodeType",
                "organizationId",
                "privateIps",
                "projectId",
                "readReplicas",
                "settings",
                "upgradableVersions",
                "userName",
                "volumeSizeInGb"
            ],
            "inputProperties": {
                "backupSameRegion": {
                    "type": "boolean",
                    "description": "Boolean to store logical backups in the same region as the database instance"
                },
                "backupScheduleFrequency": {
                    "type": "integer",
                    "description": "Backup schedule frequency in hours"
                },
                "backupScheduleRetention": {
                    "type": "integer",
                    "description": "Backup schedule retention in days"
                },
                "disableBackup": {
                    "type": "boolean",
                    "description": "Disable automated backup for the database instance"
                },
                "encryptionAtRest": {
                    "type": "boolean",
                    "description": "Enable or disable encryption at rest for the Database Instance.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                },
                "initSettings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set at database initialisation.",
                    "willReplaceOnChanges": true
                },
                "isHaCluster": {
                    "type": "boolean",
                    "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "loadBalancer": {
                    "$ref": "#/types/scaleway:databases/InstanceLoadBalancer:InstanceLoadBalancer",
                    "description": "List of Load Balancer endpoints of the Database Instance.\n"
                },
                "logsPolicy": {
                    "$ref": "#/types/scaleway:databases/InstanceLogsPolicy:InstanceLogsPolicy",
                    "description": "Logs policy configuration"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:databases/InstancePrivateIp:InstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:databases/InstancePrivateNetwork:InstancePrivateNetwork",
                    "description": "List of Private Networks endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Database Instance should be created.\n",
                    "willReplaceOnChanges": true
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set on a running instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Database Instance.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n",
                    "willReplaceOnChanges": true
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                }
            },
            "requiredInputs": [
                "nodeType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Instance resources.\n",
                "properties": {
                    "backupSameRegion": {
                        "type": "boolean",
                        "description": "Boolean to store logical backups in the same region as the database instance"
                    },
                    "backupScheduleFrequency": {
                        "type": "integer",
                        "description": "Backup schedule frequency in hours"
                    },
                    "backupScheduleRetention": {
                        "type": "integer",
                        "description": "Backup schedule retention in days"
                    },
                    "certificate": {
                        "type": "string",
                        "description": "Certificate of the Database Instance.\n"
                    },
                    "disableBackup": {
                        "type": "boolean",
                        "description": "Disable automated backup for the database instance"
                    },
                    "encryptionAtRest": {
                        "type": "boolean",
                        "description": "Enable or disable encryption at rest for the Database Instance.\n"
                    },
                    "endpointIp": {
                        "type": "string",
                        "description": "(Deprecated) The IP of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                        "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                    },
                    "endpointPort": {
                        "type": "integer",
                        "description": "(Deprecated) The port of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                        "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                    },
                    "engine": {
                        "type": "string",
                        "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                    },
                    "initSettings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of engine settings to be set at database initialisation.",
                        "willReplaceOnChanges": true
                    },
                    "isHaCluster": {
                        "type": "boolean",
                        "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                    },
                    "loadBalancer": {
                        "$ref": "#/types/scaleway:databases/InstanceLoadBalancer:InstanceLoadBalancer",
                        "description": "List of Load Balancer endpoints of the Database Instance.\n"
                    },
                    "logsPolicy": {
                        "$ref": "#/types/scaleway:databases/InstanceLogsPolicy:InstanceLogsPolicy",
                        "description": "Logs policy configuration"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Database Instance.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the Database Instance is associated with.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:databases/InstancePrivateIp:InstancePrivateIp"
                        },
                        "description": "The private IPv4 address associated with the resource.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:databases/InstancePrivateNetwork:InstancePrivateNetwork",
                        "description": "List of Private Networks endpoints of the Database Instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "readReplicas": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:databases/InstanceReadReplica:InstanceReadReplica"
                        },
                        "description": "List of read replicas of the Database Instance.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the Database Instance should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "settings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of engine settings to be set on a running instance."
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Database Instance.\n"
                    },
                    "upgradableVersions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:databases/InstanceUpgradableVersion:InstanceUpgradableVersion"
                        },
                        "description": "List of available engine versions for upgrade. Each version contains:\n"
                    },
                    "userName": {
                        "type": "string",
                        "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n",
                        "willReplaceOnChanges": true
                    },
                    "volumeSizeInGb": {
                        "type": "integer",
                        "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databaseInstance:DatabaseInstance"
                }
            ]
        },
        "scaleway:databases/privilege:Privilege": {
            "description": "Create and manage Scaleway database privileges.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/#user-and-permissions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-11\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"database\",\n});\nconst mainUser = new scaleway.databases.User(\"main\", {\n    instanceId: main.id,\n    name: \"my-db-user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    isAdmin: false,\n});\nconst mainPrivilege = new scaleway.databases.Privilege(\"main\", {\n    instanceId: main.id,\n    userName: mainUser.name,\n    databaseName: mainDatabase.name,\n    permission: \"all\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-11\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"database\")\nmain_user = scaleway.databases.User(\"main\",\n    instance_id=main.id,\n    name=\"my-db-user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    is_admin=False)\nmain_privilege = scaleway.databases.Privilege(\"main\",\n    instance_id=main.id,\n    user_name=main_user.name,\n    database_name=main_database.name,\n    permission=\"all\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-11\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"database\",\n    });\n\n    var mainUser = new Scaleway.Databases.User(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"my-db-user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        IsAdmin = false,\n    });\n\n    var mainPrivilege = new Scaleway.Databases.Privilege(\"main\", new()\n    {\n        InstanceId = main.Id,\n        UserName = mainUser.Name,\n        DatabaseName = mainDatabase.Name,\n        Permission = \"all\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-11\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDatabase, err := databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"database\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainUser, err := databases.NewUser(ctx, \"main\", \u0026databases.UserArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"my-db-user\"),\n\t\t\tPassword:   pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tIsAdmin:    pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewPrivilege(ctx, \"main\", \u0026databases.PrivilegeArgs{\n\t\t\tInstanceId:   main.ID(),\n\t\t\tUserName:     mainUser.Name,\n\t\t\tDatabaseName: mainDatabase.Name,\n\t\t\tPermission:   pulumi.String(\"all\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport com.pulumi.scaleway.databases.User;\nimport com.pulumi.scaleway.databases.UserArgs;\nimport com.pulumi.scaleway.databases.Privilege;\nimport com.pulumi.scaleway.databases.PrivilegeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-11\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"database\")\n            .build());\n\n        var mainUser = new User(\"mainUser\", UserArgs.builder()\n            .instanceId(main.id())\n            .name(\"my-db-user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .isAdmin(false)\n            .build());\n\n        var mainPrivilege = new Privilege(\"mainPrivilege\", PrivilegeArgs.builder()\n            .instanceId(main.id())\n            .userName(mainUser.name())\n            .databaseName(mainDatabase.name())\n            .permission(\"all\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-11\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: database\n  mainUser:\n    type: scaleway:databases:User\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: my-db-user\n      password: thiZ_is_v\u0026ry_s3cret\n      isAdmin: false\n  mainPrivilege:\n    type: scaleway:databases:Privilege\n    name: main\n    properties:\n      instanceId: ${main.id}\n      userName: ${mainUser.name}\n      databaseName: ${mainDatabase.name}\n      permission: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Permission Drift Management\n\n### Understanding Permission Drift\n\nWhen you configure a privilege (e.g., \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e), Scaleway applies it to **database objects that exist at that moment**. If new tables, views, or sequences are created later, they won't automatically inherit these permissions. In that case, the API may return \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n\n**Example:**\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.databases.Privilege(\"app\", {\n    instanceId: main.id,\n    userName: \"app_user\",\n    databaseName: \"mydb\",\n    permission: \"readwrite\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.databases.Privilege(\"app\",\n    instance_id=main[\"id\"],\n    user_name=\"app_user\",\n    database_name=\"mydb\",\n    permission=\"readwrite\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Databases.Privilege(\"app\", new()\n    {\n        InstanceId = main.Id,\n        UserName = \"app_user\",\n        DatabaseName = \"mydb\",\n        Permission = \"readwrite\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewPrivilege(ctx, \"app\", \u0026databases.PrivilegeArgs{\n\t\t\tInstanceId:   pulumi.Any(main.Id),\n\t\t\tUserName:     pulumi.String(\"app_user\"),\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tPermission:   pulumi.String(\"readwrite\"),\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.scaleway.databases.Privilege;\nimport com.pulumi.scaleway.databases.PrivilegeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Privilege(\"app\", PrivilegeArgs.builder()\n            .instanceId(main.id())\n            .userName(\"app_user\")\n            .databaseName(\"mydb\")\n            .permission(\"readwrite\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:databases:Privilege\n    properties:\n      instanceId: ${main.id}\n      userName: app_user\n      databaseName: mydb\n      permission: readwrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Handling Permission Drift\n\nRun `pulumi up` to reapply the configured permission to all objects (existing and new):\n\n```bash\npulumi up\n```\n\nThe plan will typically show:\n\n```diff\n~ resource \"scaleway_rdb_privilege\" \"app\" {\n    ~ permission = \"custom\" -\u003e \"readwrite\"\n}\n```\n\n## Import\n\nThe user privileges can be imported using the `{region}/{instance_id}/{database_name}/{user_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/privilege:Privilege o fr-par/11111111-1111-1111-1111-111111111111/database_name/foo\n```\n\n",
            "properties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-db-name`).\n"
                },
                "effectivePermission": {
                    "type": "string",
                    "description": "The actual permission currently set in Scaleway. May differ from \u003cspan pulumi-lang-nodejs=\"`permission`\" pulumi-lang-dotnet=\"`Permission`\" pulumi-lang-go=\"`permission`\" pulumi-lang-python=\"`permission`\" pulumi-lang-yaml=\"`permission`\" pulumi-lang-java=\"`permission`\"\u003e`permission`\u003c/span\u003e after database schema changes (new tables, views, or sequences created).\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                },
                "permissionStatus": {
                    "type": "string",
                    "description": "Permission synchronization status. Possible values:\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user (e.g. `my-db-user`).\n"
                }
            },
            "required": [
                "databaseName",
                "effectivePermission",
                "instanceId",
                "permission",
                "permissionStatus",
                "userName"
            ],
            "inputProperties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-db-name`).\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n",
                    "willReplaceOnChanges": true
                },
                "permission": {
                    "type": "string",
                    "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user (e.g. `my-db-user`).\n"
                }
            },
            "requiredInputs": [
                "databaseName",
                "instanceId",
                "permission",
                "userName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Privilege resources.\n",
                "properties": {
                    "databaseName": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-db-name`).\n"
                    },
                    "effectivePermission": {
                        "type": "string",
                        "description": "The actual permission currently set in Scaleway. May differ from \u003cspan pulumi-lang-nodejs=\"`permission`\" pulumi-lang-dotnet=\"`Permission`\" pulumi-lang-go=\"`permission`\" pulumi-lang-python=\"`permission`\" pulumi-lang-yaml=\"`permission`\" pulumi-lang-java=\"`permission`\"\u003e`permission`\u003c/span\u003e after database schema changes (new tables, views, or sequences created).\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n",
                        "willReplaceOnChanges": true
                    },
                    "permission": {
                        "type": "string",
                        "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                    },
                    "permissionStatus": {
                        "type": "string",
                        "description": "Permission synchronization status. Possible values:\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "userName": {
                        "type": "string",
                        "description": "Name of the user (e.g. `my-db-user`).\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databasePrivilege:DatabasePrivilege"
                }
            ]
        },
        "scaleway:databases/readReplica:ReadReplica": {
            "description": "Creates and manages Read Replicas.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"test-rdb-rr-update\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_rdb_read_replica\",\n        \"minimal\",\n    ],\n});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    directAccess: {},\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"test-rdb-rr-update\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_rdb_read_replica\",\n        \"minimal\",\n    ])\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    direct_access={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"test-rdb-rr-update\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_rdb_read_replica\",\n            \"minimal\",\n        },\n    });\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        DirectAccess = null,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb-rr-update\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_rdb_read_replica\"),\n\t\t\t\tpulumi.String(\"minimal\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId:   instance.ID(),\n\t\t\tDirectAccess: \u0026databases.ReadReplicaDirectAccessArgs{},\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaDirectAccessArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"test-rdb-rr-update\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_rdb_read_replica\",\n                \"minimal\")\n            .build());\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .directAccess(ReadReplicaDirectAccessArgs.builder()\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb-rr-update\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - terraform-test\n        - scaleway_rdb_read_replica\n        - minimal\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      directAccess: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private network with static endpoint\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"rdb_instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    privateNetwork: {\n        privateNetworkId: pn.id,\n        serviceIp: \"192.168.1.254/24\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"rdb_instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npn = scaleway.network.PrivateNetwork(\"pn\")\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    private_network={\n        \"private_network_id\": pn.id,\n        \"service_ip\": \"192.168.1.254/24\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"rdb_instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        PrivateNetwork = new Scaleway.Databases.Inputs.ReadReplicaPrivateNetworkArgs\n        {\n            PrivateNetworkId = pn.Id,\n            ServiceIp = \"192.168.1.254/24\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb_instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026databases.ReadReplicaPrivateNetworkArgs{\n\t\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\t\tServiceIp:        pulumi.String(\"192.168.1.254/24\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"rdb_instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var pn = new PrivateNetwork(\"pn\");\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .privateNetwork(ReadReplicaPrivateNetworkArgs.builder()\n                .privateNetworkId(pn.id())\n                .serviceIp(\"192.168.1.254/24\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb_instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  pn:\n    type: scaleway:network:PrivateNetwork\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      privateNetwork:\n        privateNetworkId: ${pn.id}\n        serviceIp: 192.168.1.254/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private network with IPAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"rdb_instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    privateNetwork: {\n        privateNetworkId: pn.id,\n        enableIpam: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"rdb_instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npn = scaleway.network.PrivateNetwork(\"pn\")\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    private_network={\n        \"private_network_id\": pn.id,\n        \"enable_ipam\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"rdb_instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        PrivateNetwork = new Scaleway.Databases.Inputs.ReadReplicaPrivateNetworkArgs\n        {\n            PrivateNetworkId = pn.Id,\n            EnableIpam = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb_instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026databases.ReadReplicaPrivateNetworkArgs{\n\t\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\t\tEnableIpam:       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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"rdb_instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var pn = new PrivateNetwork(\"pn\");\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .privateNetwork(ReadReplicaPrivateNetworkArgs.builder()\n                .privateNetworkId(pn.id())\n                .enableIpam(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb_instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  pn:\n    type: scaleway:network:PrivateNetwork\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      privateNetwork:\n        privateNetworkId: ${pn.id}\n        enableIpam: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRead Replicas can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/readReplica:ReadReplica rr fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "directAccess": {
                    "$ref": "#/types/scaleway:databases/ReadReplicaDirectAccess:ReadReplicaDirectAccess",
                    "description": "Creates a direct access endpoint to rdb replica.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:databases/ReadReplicaPrivateNetwork:ReadReplicaPrivateNetwork",
                    "description": "Create an endpoint in a Private Netork.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Read Replica should be created.\n"
                },
                "sameZone": {
                    "type": "boolean",
                    "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n"
                }
            },
            "required": [
                "instanceId"
            ],
            "inputProperties": {
                "directAccess": {
                    "$ref": "#/types/scaleway:databases/ReadReplicaDirectAccess:ReadReplicaDirectAccess",
                    "description": "Creates a direct access endpoint to rdb replica.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:databases/ReadReplicaPrivateNetwork:ReadReplicaPrivateNetwork",
                    "description": "Create an endpoint in a Private Netork.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Read Replica should be created.\n",
                    "willReplaceOnChanges": true
                },
                "sameZone": {
                    "type": "boolean",
                    "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReadReplica resources.\n",
                "properties": {
                    "directAccess": {
                        "$ref": "#/types/scaleway:databases/ReadReplicaDirectAccess:ReadReplicaDirectAccess",
                        "description": "Creates a direct access endpoint to rdb replica.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:databases/ReadReplicaPrivateNetwork:ReadReplicaPrivateNetwork",
                        "description": "Create an endpoint in a Private Netork.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the Read Replica should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sameZone": {
                        "type": "boolean",
                        "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databaseReadReplica:DatabaseReadReplica"
                }
            ]
        },
        "scaleway:databases/serverlessDatabase:ServerlessDatabase": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-dotnet=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-go=\"`databases.ServerlessDatabase`\" pulumi-lang-python=\"`databases.ServerlessDatabase`\" pulumi-lang-yaml=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-java=\"`scaleway.databases.ServerlessDatabase`\"\u003e`scaleway.databases.ServerlessDatabase`\u003c/span\u003e resource allows you to create and manage databases for Scaleway Serverless SQL Databases.\n\nRefer to the Serverless SQL Databases [documentation](https://www.scaleway.com/en/docs/serverless-sql-databases/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-databases/) for more information.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst database = new scaleway.databases.ServerlessDatabase(\"database\", {\n    name: \"my-database\",\n    minCpu: 0,\n    maxCpu: 8,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndatabase = scaleway.databases.ServerlessDatabase(\"database\",\n    name=\"my-database\",\n    min_cpu=0,\n    max_cpu=8)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var database = new Scaleway.Databases.ServerlessDatabase(\"database\", new()\n    {\n        Name = \"my-database\",\n        MinCpu = 0,\n        MaxCpu = 8,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewServerlessDatabase(ctx, \"database\", \u0026databases.ServerlessDatabaseArgs{\n\t\t\tName:   pulumi.String(\"my-database\"),\n\t\t\tMinCpu: pulumi.Int(0),\n\t\t\tMaxCpu: pulumi.Int(8),\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.scaleway.databases.ServerlessDatabase;\nimport com.pulumi.scaleway.databases.ServerlessDatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 database = new ServerlessDatabase(\"database\", ServerlessDatabaseArgs.builder()\n            .name(\"my-database\")\n            .minCpu(0)\n            .maxCpu(8)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  database:\n    type: scaleway:databases:ServerlessDatabase\n    properties:\n      name: my-database\n      minCpu: 0\n      maxCpu: 8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IAM Application\n\nThis example creates an [IAM application](https://www.scaleway.com/en/docs/iam/concepts/#application) and an [API secret key](https://www.scaleway.com/en/docs/iam/how-to/create-api-keys/) used to connect to the database.\n\n\u003e **Note:** For more information, see [How to connect to a Serverless SQL Database](https://www.scaleway.com/en/docs/serverless-sql-databases/how-to/connect-to-a-database/)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst dbAccess = new scaleway.iam.Policy(\"db_access\", {\n    name: \"my policy\",\n    description: \"gives app access to serverless database in project\",\n    applicationId: app.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ServerlessSQLDatabaseReadWrite\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: app.id});\nconst database = new scaleway.databases.ServerlessDatabase(\"database\", {\n    name: \"my-database\",\n    minCpu: 0,\n    maxCpu: 8,\n});\nexport const databaseConnectionString = std.format({\n    input: \"postgres://%s:%s@%s\",\n    args: [\n        app.id,\n        apiKey.secretKey,\n        std.trimprefix({\n            input: database.endpoint,\n            prefix: \"postgres://\",\n        }).result,\n    ],\n}).result;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.account.get_project(name=\"default\")\napp = scaleway.iam.Application(\"app\", name=\"my app\")\ndb_access = scaleway.iam.Policy(\"db_access\",\n    name=\"my policy\",\n    description=\"gives app access to serverless database in project\",\n    application_id=app.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ServerlessSQLDatabaseReadWrite\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=app.id)\ndatabase = scaleway.databases.ServerlessDatabase(\"database\",\n    name=\"my-database\",\n    min_cpu=0,\n    max_cpu=8)\npulumi.export(\"databaseConnectionString\", std.format(input=\"postgres://%s:%s@%s\",\n    args=[\n        app.id,\n        api_key.secret_key,\n        std.trimprefix(input=database.endpoint,\n            prefix=\"postgres://\")[\"result\"],\n    ])[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var dbAccess = new Scaleway.Iam.Policy(\"db_access\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app access to serverless database in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ServerlessSQLDatabaseReadWrite\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = app.Id,\n    });\n\n    var database = new Scaleway.Databases.ServerlessDatabase(\"database\", new()\n    {\n        Name = \"my-database\",\n        MinCpu = 0,\n        MaxCpu = 8,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseConnectionString\"] = Std.Format.Invoke(new()\n        {\n            Input = \"postgres://%s:%s@%s\",\n            Args = new[]\n            {\n                app.Id,\n                apiKey.SecretKey,\n                Std.Trimprefix.Invoke(new()\n                {\n                    Input = database.Endpoint,\n                    Prefix = \"postgres://\",\n                }).Result,\n            },\n        }).Result,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"db_access\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app access to serverless database in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ServerlessSQLDatabaseReadWrite\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: app.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := databases.NewServerlessDatabase(ctx, \"database\", \u0026databases.ServerlessDatabaseArgs{\n\t\t\tName:   pulumi.String(\"my-database\"),\n\t\t\tMinCpu: pulumi.Int(0),\n\t\t\tMaxCpu: pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseConnectionString\", pulumi.Any(std.Format(ctx, map[string]interface{}{\n\t\t\t\"input\": \"postgres://%s:%s@%s\",\n\t\t\t\"args\": []interface{}{\n\t\t\t\tapp.ID(),\n\t\t\t\tapiKey.SecretKey,\n\t\t\t\tstd.Trimprefix(ctx, map[string]interface{}{\n\t\t\t\t\t\"input\":  database.Endpoint,\n\t\t\t\t\t\"prefix\": \"postgres://\",\n\t\t\t\t}, nil).Result,\n\t\t\t},\n\t\t}, nil).Result))\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.databases.ServerlessDatabase;\nimport com.pulumi.scaleway.databases.ServerlessDatabaseArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var dbAccess = new Policy(\"dbAccess\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app access to serverless database in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ServerlessSQLDatabaseReadWrite\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(app.id())\n            .build());\n\n        var database = new ServerlessDatabase(\"database\", ServerlessDatabaseArgs.builder()\n            .name(\"my-database\")\n            .minCpu(0)\n            .maxCpu(8)\n            .build());\n\n        ctx.export(\"databaseConnectionString\", StdFunctions.format(Map.ofEntries(\n            Map.entry(\"input\", \"postgres://%s:%s@%s\"),\n            Map.entry(\"args\", Arrays.asList(            \n                app.id(),\n                apiKey.secretKey(),\n                StdFunctions.trimprefix(Map.ofEntries(\n                    Map.entry(\"input\", database.endpoint()),\n                    Map.entry(\"prefix\", \"postgres://\")\n                )).result()))\n        )).result());\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  dbAccess:\n    type: scaleway:iam:Policy\n    name: db_access\n    properties:\n      name: my policy\n      description: gives app access to serverless database in project\n      applicationId: ${app.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ServerlessSQLDatabaseReadWrite\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${app.id}\n  database:\n    type: scaleway:databases:ServerlessDatabase\n    properties:\n      name: my-database\n      minCpu: 0\n      maxCpu: 8\nvariables:\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  databaseConnectionString:\n    fn::invoke:\n      function: std:format\n      arguments:\n        input: postgres://%s:%s@%s\n        args:\n          - ${app.id}\n          - ${apiKey.secretKey}\n          - fn::invoke:\n              function: std:trimprefix\n              arguments:\n                input: ${database.endpoint}\n                prefix: postgres://\n              return: result\n      return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerless SQL Databases can be imported using the `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:databases/serverlessDatabase:ServerlessDatabase database fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint of the database.\n"
                },
                "maxCpu": {
                    "type": "integer",
                    "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                },
                "minCpu": {
                    "type": "integer",
                    "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                }
            },
            "required": [
                "endpoint",
                "name",
                "projectId"
            ],
            "inputProperties": {
                "maxCpu": {
                    "type": "integer",
                    "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                },
                "minCpu": {
                    "type": "integer",
                    "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ServerlessDatabase resources.\n",
                "properties": {
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint of the database.\n"
                    },
                    "maxCpu": {
                        "type": "integer",
                        "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                    },
                    "minCpu": {
                        "type": "integer",
                        "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/sdbDatabase:SdbDatabase"
                }
            ]
        },
        "scaleway:databases/snapshot:Snapshot": {
            "description": "Creates and manages Scaleway RDB (Relational Database) Snapshots.\nSnapshots are point-in-time backups of a database instance that can be used for recovery or duplication.\nFor more information, refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Example Basic Snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb-instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_rdb_instance\",\n        \"minimal\",\n    ],\n    volumeType: \"sbs_5k\",\n    volumeSizeInGb: 10,\n});\nconst test = new scaleway.databases.Snapshot(\"test\", {\n    name: \"initial-snapshot\",\n    instanceId: main.id,\n}, {\n    dependsOn: [main],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb-instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_rdb_instance\",\n        \"minimal\",\n    ],\n    volume_type=\"sbs_5k\",\n    volume_size_in_gb=10)\ntest = scaleway.databases.Snapshot(\"test\",\n    name=\"initial-snapshot\",\n    instance_id=main.id,\n    opts = pulumi.ResourceOptions(depends_on=[main]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb-instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_rdb_instance\",\n            \"minimal\",\n        },\n        VolumeType = \"sbs_5k\",\n        VolumeSizeInGb = 10,\n    });\n\n    var test = new Scaleway.Databases.Snapshot(\"test\", new()\n    {\n        Name = \"initial-snapshot\",\n        InstanceId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb-instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_rdb_instance\"),\n\t\t\t\tpulumi.String(\"minimal\"),\n\t\t\t},\n\t\t\tVolumeType:     pulumi.String(\"sbs_5k\"),\n\t\t\tVolumeSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewSnapshot(ctx, \"test\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"initial-snapshot\"),\n\t\t\tInstanceId: main.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb-instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_rdb_instance\",\n                \"minimal\")\n            .volumeType(\"sbs_5k\")\n            .volumeSizeInGb(10)\n            .build());\n\n        var test = new Snapshot(\"test\", SnapshotArgs.builder()\n            .name(\"initial-snapshot\")\n            .instanceId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb-instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-15\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - terraform-test\n        - scaleway_rdb_instance\n        - minimal\n      volumeType: sbs_5k\n      volumeSizeInGb: 10\n  test:\n    type: scaleway:databases:Snapshot\n    properties:\n      name: initial-snapshot\n      instanceId: ${main.id}\n    options:\n      dependsOn:\n        - ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshotWithExpiration = new scaleway.databases.Snapshot(\"snapshot_with_expiration\", {\n    name: \"snapshot-with-expiration\",\n    instanceId: main.id,\n    expiresAt: \"2025-01-31T00:00:00Z\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsnapshot_with_expiration = scaleway.databases.Snapshot(\"snapshot_with_expiration\",\n    name=\"snapshot-with-expiration\",\n    instance_id=main[\"id\"],\n    expires_at=\"2025-01-31T00:00:00Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshotWithExpiration = new Scaleway.Databases.Snapshot(\"snapshot_with_expiration\", new()\n    {\n        Name = \"snapshot-with-expiration\",\n        InstanceId = main.Id,\n        ExpiresAt = \"2025-01-31T00:00:00Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewSnapshot(ctx, \"snapshot_with_expiration\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot-with-expiration\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t\tExpiresAt:  pulumi.String(\"2025-01-31T00:00:00Z\"),\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.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshotWithExpiration = new Snapshot(\"snapshotWithExpiration\", SnapshotArgs.builder()\n            .name(\"snapshot-with-expiration\")\n            .instanceId(main.id())\n            .expiresAt(\"2025-01-31T00:00:00Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  snapshotWithExpiration:\n    type: scaleway:databases:Snapshot\n    name: snapshot_with_expiration\n    properties:\n      name: snapshot-with-expiration\n      instanceId: ${main.id}\n      expiresAt: 2025-01-31T00:00:00Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Multiple Snapshots\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshotA = new scaleway.databases.Snapshot(\"snapshot_a\", {\n    name: \"snapshot_a\",\n    instanceId: main.id,\n}, {\n    dependsOn: [main],\n});\nconst snapshotB = new scaleway.databases.Snapshot(\"snapshot_b\", {\n    name: \"snapshot_b\",\n    instanceId: main.id,\n    expiresAt: \"2025-02-07T00:00:00Z\",\n}, {\n    dependsOn: [main],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsnapshot_a = scaleway.databases.Snapshot(\"snapshot_a\",\n    name=\"snapshot_a\",\n    instance_id=main[\"id\"],\n    opts = pulumi.ResourceOptions(depends_on=[main]))\nsnapshot_b = scaleway.databases.Snapshot(\"snapshot_b\",\n    name=\"snapshot_b\",\n    instance_id=main[\"id\"],\n    expires_at=\"2025-02-07T00:00:00Z\",\n    opts = pulumi.ResourceOptions(depends_on=[main]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshotA = new Scaleway.Databases.Snapshot(\"snapshot_a\", new()\n    {\n        Name = \"snapshot_a\",\n        InstanceId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n    var snapshotB = new Scaleway.Databases.Snapshot(\"snapshot_b\", new()\n    {\n        Name = \"snapshot_b\",\n        InstanceId = main.Id,\n        ExpiresAt = \"2025-02-07T00:00:00Z\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewSnapshot(ctx, \"snapshot_a\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot_a\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewSnapshot(ctx, \"snapshot_b\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot_b\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t\tExpiresAt:  pulumi.String(\"2025-02-07T00:00:00Z\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\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.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshotA = new Snapshot(\"snapshotA\", SnapshotArgs.builder()\n            .name(\"snapshot_a\")\n            .instanceId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n        var snapshotB = new Snapshot(\"snapshotB\", SnapshotArgs.builder()\n            .name(\"snapshot_b\")\n            .instanceId(main.id())\n            .expiresAt(\"2025-02-07T00:00:00Z\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  snapshotA:\n    type: scaleway:databases:Snapshot\n    name: snapshot_a\n    properties:\n      name: snapshot_a\n      instanceId: ${main.id}\n    options:\n      dependsOn:\n        - ${main}\n  snapshotB:\n    type: scaleway:databases:Snapshot\n    name: snapshot_b\n    properties:\n      name: snapshot_b\n      instanceId: ${main.id}\n      expiresAt: 2025-02-07T00:00:00Z\n    options:\n      dependsOn:\n        - ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Limitations\n\n- Snapshots are tied to the database instance and region where they are created.\n- Expired snapshots are automatically deleted and cannot be restored.\n\n## Notes\n\n- Ensure the \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e corresponds to an existing database instance.\n- Use 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 argument when creating snapshots right after creating an instance to ensure proper dependency management.\n\n## Import\n\nRDB Snapshots can be imported using the `{region}/{snapshot_id}` format.\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The timestamp when the snapshot was created, in ISO 8601 format.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The UUID of the database instance for which the snapshot is created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of the database instance for which the snapshot was created.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the snapshot in bytes.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the snapshot (e.g., \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The timestamp when the snapshot was last updated, in ISO 8601 format.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume used by the snapshot.\n"
                }
            },
            "required": [
                "createdAt",
                "expiresAt",
                "instanceId",
                "name",
                "nodeType",
                "size",
                "status",
                "updatedAt",
                "volumeType"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The UUID of the database instance for which the snapshot is created.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Snapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The timestamp when the snapshot was created, in ISO 8601 format.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "The UUID of the database instance for which the snapshot is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of the database instance for which the snapshot was created.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the snapshot in bytes.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the snapshot (e.g., \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e).\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The timestamp when the snapshot was last updated, in ISO 8601 format.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "The type of volume used by the snapshot.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/rdbSnapshot:RdbSnapshot"
                }
            ]
        },
        "scaleway:databases/user:User": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.User`\" pulumi-lang-dotnet=\"`scaleway.databases.User`\" pulumi-lang-go=\"`databases.User`\" pulumi-lang-python=\"`databases.User`\" pulumi-lang-yaml=\"`scaleway.databases.User`\" pulumi-lang-java=\"`scaleway.databases.User`\"\u003e`scaleway.databases.User`\u003c/span\u003e resource creates and manages database users.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as random from \"@pulumi/random\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic user creation\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst dbPassword = new random.index.Password(\"db_password\", {\n    length: 20,\n    special: true,\n    upper: true,\n    lower: true,\n    numeric: true,\n    minUpper: 1,\n    minLower: 1,\n    minNumeric: 1,\n    minSpecial: 1,\n    overrideSpecial: \"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\",\n});\nconst dbAdmin = new scaleway.databases.User(\"db_admin\", {\n    instanceId: main.id,\n    name: \"devtools\",\n    password: dbPassword.result,\n    isAdmin: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_random as random\nimport pulumiverse_scaleway as scaleway\n\n### Basic user creation\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\ndb_password = random.Password(\"db_password\",\n    length=20,\n    special=True,\n    upper=True,\n    lower=True,\n    numeric=True,\n    min_upper=1,\n    min_lower=1,\n    min_numeric=1,\n    min_special=1,\n    override_special=!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\ndb_admin = scaleway.databases.User(\"db_admin\",\n    instance_id=main.id,\n    name=\"devtools\",\n    password=db_password[\"result\"],\n    is_admin=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Random = Pulumi.Random;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic user creation\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var dbPassword = new Random.Password(\"db_password\", new()\n    {\n        Length = 20,\n        Special = true,\n        Upper = true,\n        Lower = true,\n        Numeric = true,\n        MinUpper = 1,\n        MinLower = 1,\n        MinNumeric = 1,\n        MinSpecial = 1,\n        OverrideSpecial = \"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\",\n    });\n\n    var dbAdmin = new Scaleway.Databases.User(\"db_admin\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"devtools\",\n        Password = dbPassword.Result,\n        IsAdmin = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic user creation\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbPassword, err := random.NewPassword(ctx, \"db_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          20,\n\t\t\tSpecial:         true,\n\t\t\tUpper:           true,\n\t\t\tLower:           true,\n\t\t\tNumeric:         true,\n\t\t\tMinUpper:        1,\n\t\t\tMinLower:        1,\n\t\t\tMinNumeric:      1,\n\t\t\tMinSpecial:      1,\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 = databases.NewUser(ctx, \"db_admin\", \u0026databases.UserArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"devtools\"),\n\t\t\tPassword:   dbPassword.Result,\n\t\t\tIsAdmin:    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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.random.Password;\nimport com.pulumi.random.PasswordArgs;\nimport com.pulumi.scaleway.databases.User;\nimport com.pulumi.scaleway.databases.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 user creation\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var dbPassword = new Password(\"dbPassword\", PasswordArgs.builder()\n            .length(20)\n            .special(true)\n            .upper(true)\n            .lower(true)\n            .numeric(true)\n            .minUpper(1)\n            .minLower(1)\n            .minNumeric(1)\n            .minSpecial(1)\n            .overrideSpecial(\"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\")\n            .build());\n\n        var dbAdmin = new User(\"dbAdmin\", UserArgs.builder()\n            .instanceId(main.id())\n            .name(\"devtools\")\n            .password(dbPassword.result())\n            .isAdmin(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic user creation\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  dbPassword:\n    type: random:Password\n    name: db_password\n    properties:\n      length: 20\n      special: true\n      upper: true\n      lower: true\n      numeric: true\n      minUpper: 1\n      minLower: 1\n      minNumeric: 1\n      minSpecial: 1 # Exclude characters that might cause issues in some contexts\n      overrideSpecial: '!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?'\n  dbAdmin:\n    type: scaleway:databases:User\n    name: db_admin\n    properties:\n      instanceId: ${main.id}\n      name: devtools\n      password: ${dbPassword.result}\n      isAdmin: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase users can be imported using `{region}/{instance_id}/{user_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:databases/user:User admin fr-par/11111111-1111-1111-1111-111111111111/admin\n```\n\n",
            "properties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n"
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Grant admin permissions to the database user.\n"
                },
                "name": {
                    "type": "string",
                    "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                    "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this resource resides in.\n"
                }
            },
            "required": [
                "instanceId",
                "name"
            ],
            "inputProperties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n",
                    "willReplaceOnChanges": true
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Grant admin permissions to the database user.\n"
                },
                "name": {
                    "type": "string",
                    "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                    "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this resource resides in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering User resources.\n",
                "properties": {
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n",
                        "willReplaceOnChanges": true
                    },
                    "isAdmin": {
                        "type": "boolean",
                        "description": "Grant admin permissions to the database user.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                        "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The Scaleway region this resource resides in.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/databaseUser:DatabaseUser"
                }
            ]
        },
        "scaleway:datawarehouse/database:Database": {
            "description": "Creates and manages Scaleway Data Warehouse databases within a deployment.\nFor more information refer to the [product documentation](https://www.scaleway.com/en/docs/data-warehouse/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.datawarehouse.Database(\"main\", {\n    deploymentId: main.id,\n    name: \"my_database\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.datawarehouse.Database(\"main\",\n    deployment_id=main.id,\n    name=\"my_database\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Datawarehouse.Database(\"main\", new()\n    {\n        DeploymentId = main.Id,\n        Name = \"my_database\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datawarehouse.NewDatabase(ctx, \"main\", \u0026datawarehouse.DatabaseArgs{\n\t\t\tDeploymentId: main.ID(),\n\t\t\tName:         pulumi.String(\"my_database\"),\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.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport com.pulumi.scaleway.datawarehouse.Database;\nimport com.pulumi.scaleway.datawarehouse.DatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Deployment(\"main\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .deploymentId(main.id())\n            .name(\"my_database\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:datawarehouse:Deployment\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:datawarehouse:Database\n    name: main\n    properties:\n      deploymentId: ${main.id}\n      name: my_database\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nData Warehouse databases can be imported using the `{region}/{deployment_id}/{name}`, e.g.\n\n```sh\n$ pulumi import scaleway:datawarehouse/database:Database main fr-par/11111111-1111-1111-1111-111111111111/my_database\n```\n\n",
            "properties": {
                "deploymentId": {
                    "type": "string",
                    "description": "ID of the Data Warehouse deployment to which this database belongs.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the database should be created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "Size of the database in GB.\n"
                }
            },
            "required": [
                "deploymentId",
                "name",
                "size"
            ],
            "inputProperties": {
                "deploymentId": {
                    "type": "string",
                    "description": "ID of the Data Warehouse deployment to which this database belongs.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the database should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "deploymentId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Database resources.\n",
                "properties": {
                    "deploymentId": {
                        "type": "string",
                        "description": "ID of the Data Warehouse deployment to which this database belongs.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the database.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the database should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "Size of the database in GB.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:datawarehouse/deployment:Deployment": {
            "description": "Creates and manages Scaleway Data Warehouse deployments.\nFor more information refer to the [product documentation](https://www.scaleway.com/en/docs/data-warehouse/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\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.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Deployment(\"main\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:datawarehouse:Deployment\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"production\",\n        \"analytics\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"production\",\n        \"analytics\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"production\",\n            \"analytics\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"analytics\"),\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.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Deployment(\"main\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"production\",\n                \"analytics\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:datawarehouse:Deployment\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - production\n        - analytics\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Private Network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.Vpc(\"main\", {name: \"my-vpc\"});\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {\n    name: \"my-private-network\",\n    vpcId: main.id,\n});\nconst mainDeployment = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    privateNetwork: {\n        pnId: pn.id,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.Vpc(\"main\", name=\"my-vpc\")\npn = scaleway.network.PrivateNetwork(\"pn\",\n    name=\"my-private-network\",\n    vpc_id=main.id)\nmain_deployment = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    private_network={\n        \"pn_id\": pn.id,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.Vpc(\"main\", new()\n    {\n        Name = \"my-vpc\",\n    });\n\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\", new()\n    {\n        Name = \"my-private-network\",\n        VpcId = main.Id,\n    });\n\n    var mainDeployment = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        PrivateNetwork = new Scaleway.Datawarehouse.Inputs.DeploymentPrivateNetworkArgs\n        {\n            PnId = pn.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := network.NewVpc(ctx, \"main\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:  pulumi.String(\"my-private-network\"),\n\t\t\tVpcId: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tPrivateNetwork: \u0026datawarehouse.DeploymentPrivateNetworkArgs{\n\t\t\t\tPnId: pn.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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport com.pulumi.scaleway.datawarehouse.inputs.DeploymentPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Vpc(\"main\", VpcArgs.builder()\n            .name(\"my-vpc\")\n            .build());\n\n        var pn = new PrivateNetwork(\"pn\", PrivateNetworkArgs.builder()\n            .name(\"my-private-network\")\n            .vpcId(main.id())\n            .build());\n\n        var mainDeployment = new Deployment(\"mainDeployment\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .privateNetwork(DeploymentPrivateNetworkArgs.builder()\n                .pnId(pn.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:Vpc\n    properties:\n      name: my-vpc\n  pn:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: my-private-network\n      vpcId: ${main.id}\n  mainDeployment:\n    type: scaleway:datawarehouse:Deployment\n    name: main\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n      privateNetwork:\n        pnId: ${pn.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nData Warehouse deployments can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:datawarehouse/deployment:Deployment main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cpuMax": {
                    "type": "integer",
                    "description": "Maximum CPU count (autoscaling upper bound). Must be greater than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e. Can be updated in place.\n"
                },
                "cpuMin": {
                    "type": "integer",
                    "description": "Minimum CPU count (autoscaling lower bound). Must be less than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e. Can be updated in place.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of deployment creation (RFC 3339 format).\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Data Warehouse deployment.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the deployment. If not specified, a random password will be generated. Only one 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 or \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 should be specified. Note: plain \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 is only used during deployment creation; it is not rotated on update.\n",
                    "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.\nPassword for the first user of the deployment in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. Updates are applied via the Users API to the initial user (an administrator when present, otherwise the first user by name).\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:datawarehouse/DeploymentPrivateNetwork:DeploymentPrivateNetwork",
                    "description": "Private network configuration to expose your deployment. Changing this forces recreation of the deployment.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n\n\u003e **Note:** A public endpoint is always created automatically alongside any private network configuration.\n"
                },
                "publicNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:datawarehouse/DeploymentPublicNetwork:DeploymentPublicNetwork"
                    },
                    "description": "Public endpoint information (always created automatically).\n"
                },
                "ramPerCpu": {
                    "type": "integer",
                    "description": "RAM per CPU in GB.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment should be created.\n"
                },
                "replicaCount": {
                    "type": "integer",
                    "description": "Number of replicas. Can be updated in place via the deployment configuration API.\n"
                },
                "shardCount": {
                    "type": "integer",
                    "description": "Number of shards for the deployment. This value is immutable and cannot be changed after creation."
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the deployment should be running. 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, the provider calls the Stop deployment API after create or update; when 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, it calls Start deployment if the deployment is stopped. Scaling fields (\u003cspan pulumi-lang-nodejs=\"`replicaCount`\" pulumi-lang-dotnet=\"`ReplicaCount`\" pulumi-lang-go=\"`replicaCount`\" pulumi-lang-python=\"`replica_count`\" pulumi-lang-yaml=\"`replicaCount`\" pulumi-lang-java=\"`replicaCount`\"\u003e`replicaCount`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e) require the deployment to be running; if it is stopped, the provider starts it to apply the change, then stops it again when \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e 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"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the deployment (e.g., \"ready\", \"provisioning\").\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to apply to the deployment.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of deployment last update (RFC 3339 format).\n"
                },
                "version": {
                    "type": "string",
                    "description": "ClickHouse version to use (e.g., \"v25\"). Changing this forces recreation of the deployment.\n"
                }
            },
            "required": [
                "cpuMax",
                "cpuMin",
                "createdAt",
                "name",
                "projectId",
                "publicNetworks",
                "ramPerCpu",
                "replicaCount",
                "shardCount",
                "status",
                "updatedAt",
                "version"
            ],
            "inputProperties": {
                "cpuMax": {
                    "type": "integer",
                    "description": "Maximum CPU count (autoscaling upper bound). Must be greater than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e. Can be updated in place.\n"
                },
                "cpuMin": {
                    "type": "integer",
                    "description": "Minimum CPU count (autoscaling lower bound). Must be less than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e. Can be updated in place.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Data Warehouse deployment.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the deployment. If not specified, a random password will be generated. Only one 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 or \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 should be specified. Note: plain \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 is only used during deployment creation; it is not rotated on update.\n",
                    "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.\nPassword for the first user of the deployment in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. Updates are applied via the Users API to the initial user (an administrator when present, otherwise the first user by name).\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:datawarehouse/DeploymentPrivateNetwork:DeploymentPrivateNetwork",
                    "description": "Private network configuration to expose your deployment. Changing this forces recreation of the deployment.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n\n\u003e **Note:** A public endpoint is always created automatically alongside any private network configuration.\n",
                    "willReplaceOnChanges": true
                },
                "ramPerCpu": {
                    "type": "integer",
                    "description": "RAM per CPU in GB.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment should be created.\n",
                    "willReplaceOnChanges": true
                },
                "replicaCount": {
                    "type": "integer",
                    "description": "Number of replicas. Can be updated in place via the deployment configuration API.\n"
                },
                "shardCount": {
                    "type": "integer",
                    "description": "Number of shards for the deployment. This value is immutable and cannot be changed after creation.",
                    "willReplaceOnChanges": true
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the deployment should be running. 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, the provider calls the Stop deployment API after create or update; when 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, it calls Start deployment if the deployment is stopped. Scaling fields (\u003cspan pulumi-lang-nodejs=\"`replicaCount`\" pulumi-lang-dotnet=\"`ReplicaCount`\" pulumi-lang-go=\"`replicaCount`\" pulumi-lang-python=\"`replica_count`\" pulumi-lang-yaml=\"`replicaCount`\" pulumi-lang-java=\"`replicaCount`\"\u003e`replicaCount`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e) require the deployment to be running; if it is stopped, the provider starts it to apply the change, then stops it again when \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e 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"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to apply to the deployment.\n"
                },
                "version": {
                    "type": "string",
                    "description": "ClickHouse version to use (e.g., \"v25\"). Changing this forces recreation of the deployment.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "cpuMax",
                "cpuMin",
                "ramPerCpu",
                "replicaCount",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Deployment resources.\n",
                "properties": {
                    "cpuMax": {
                        "type": "integer",
                        "description": "Maximum CPU count (autoscaling upper bound). Must be greater than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e. Can be updated in place.\n"
                    },
                    "cpuMin": {
                        "type": "integer",
                        "description": "Minimum CPU count (autoscaling lower bound). Must be less than or equal to \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e. Can be updated in place.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of deployment creation (RFC 3339 format).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Data Warehouse deployment.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the first user of the deployment. If not specified, a random password will be generated. Only one 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 or \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 should be specified. Note: plain \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 is only used during deployment creation; it is not rotated on update.\n",
                        "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.\nPassword for the first user of the deployment in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. Updates are applied via the Users API to the initial user (an administrator when present, otherwise the first user by name).\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:datawarehouse/DeploymentPrivateNetwork:DeploymentPrivateNetwork",
                        "description": "Private network configuration to expose your deployment. Changing this forces recreation of the deployment.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n\n\u003e **Note:** A public endpoint is always created automatically alongside any private network configuration.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:datawarehouse/DeploymentPublicNetwork:DeploymentPublicNetwork"
                        },
                        "description": "Public endpoint information (always created automatically).\n"
                    },
                    "ramPerCpu": {
                        "type": "integer",
                        "description": "RAM per CPU in GB.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the deployment should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "replicaCount": {
                        "type": "integer",
                        "description": "Number of replicas. Can be updated in place via the deployment configuration API.\n"
                    },
                    "shardCount": {
                        "type": "integer",
                        "description": "Number of shards for the deployment. This value is immutable and cannot be changed after creation.",
                        "willReplaceOnChanges": true
                    },
                    "started": {
                        "type": "boolean",
                        "description": "Whether the deployment should be running. 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, the provider calls the Stop deployment API after create or update; when 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, it calls Start deployment if the deployment is stopped. Scaling fields (\u003cspan pulumi-lang-nodejs=\"`replicaCount`\" pulumi-lang-dotnet=\"`ReplicaCount`\" pulumi-lang-go=\"`replicaCount`\" pulumi-lang-python=\"`replica_count`\" pulumi-lang-yaml=\"`replicaCount`\" pulumi-lang-java=\"`replicaCount`\"\u003e`replicaCount`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMin`\" pulumi-lang-dotnet=\"`CpuMin`\" pulumi-lang-go=\"`cpuMin`\" pulumi-lang-python=\"`cpu_min`\" pulumi-lang-yaml=\"`cpuMin`\" pulumi-lang-java=\"`cpuMin`\"\u003e`cpuMin`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpuMax`\" pulumi-lang-dotnet=\"`CpuMax`\" pulumi-lang-go=\"`cpuMax`\" pulumi-lang-python=\"`cpu_max`\" pulumi-lang-yaml=\"`cpuMax`\" pulumi-lang-java=\"`cpuMax`\"\u003e`cpuMax`\u003c/span\u003e) require the deployment to be running; if it is stopped, the provider starts it to apply the change, then stops it again when \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e 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"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the deployment (e.g., \"ready\", \"provisioning\").\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of tags to apply to the deployment.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of deployment last update (RFC 3339 format).\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "ClickHouse version to use (e.g., \"v25\"). Changing this forces recreation of the deployment.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:datawarehouse/user:User": {
            "description": "Creates and manages Scaleway Data Warehouse users within a deployment.\nFor more information refer to the [product documentation](https://www.scaleway.com/en/docs/data-warehouse/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainUser = new scaleway.datawarehouse.User(\"main\", {\n    deploymentId: main.id,\n    name: \"my_user\",\n    password: \"user_password_123\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_user = scaleway.datawarehouse.User(\"main\",\n    deployment_id=main.id,\n    name=\"my_user\",\n    password=\"user_password_123\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainUser = new Scaleway.Datawarehouse.User(\"main\", new()\n    {\n        DeploymentId = main.Id,\n        Name = \"my_user\",\n        Password = \"user_password_123\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datawarehouse.NewUser(ctx, \"main\", \u0026datawarehouse.UserArgs{\n\t\t\tDeploymentId: main.ID(),\n\t\t\tName:         pulumi.String(\"my_user\"),\n\t\t\tPassword:     pulumi.String(\"user_password_123\"),\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.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport com.pulumi.scaleway.datawarehouse.User;\nimport com.pulumi.scaleway.datawarehouse.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Deployment(\"main\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainUser = new User(\"mainUser\", UserArgs.builder()\n            .deploymentId(main.id())\n            .name(\"my_user\")\n            .password(\"user_password_123\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:datawarehouse:Deployment\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n  mainUser:\n    type: scaleway:datawarehouse:User\n    name: main\n    properties:\n      deploymentId: ${main.id}\n      name: my_user\n      password: user_password_123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Admin User\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.datawarehouse.Deployment(\"main\", {\n    name: \"my-datawarehouse\",\n    version: \"v25\",\n    replicaCount: 1,\n    cpuMin: 2,\n    cpuMax: 4,\n    ramPerCpu: 4,\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst admin = new scaleway.datawarehouse.User(\"admin\", {\n    deploymentId: main.id,\n    name: \"admin_user\",\n    password: \"admin_password_456\",\n    isAdmin: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.datawarehouse.Deployment(\"main\",\n    name=\"my-datawarehouse\",\n    version=\"v25\",\n    replica_count=1,\n    cpu_min=2,\n    cpu_max=4,\n    ram_per_cpu=4,\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nadmin = scaleway.datawarehouse.User(\"admin\",\n    deployment_id=main.id,\n    name=\"admin_user\",\n    password=\"admin_password_456\",\n    is_admin=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Datawarehouse.Deployment(\"main\", new()\n    {\n        Name = \"my-datawarehouse\",\n        Version = \"v25\",\n        ReplicaCount = 1,\n        CpuMin = 2,\n        CpuMax = 4,\n        RamPerCpu = 4,\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var admin = new Scaleway.Datawarehouse.User(\"admin\", new()\n    {\n        DeploymentId = main.Id,\n        Name = \"admin_user\",\n        Password = \"admin_password_456\",\n        IsAdmin = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/datawarehouse\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := datawarehouse.NewDeployment(ctx, \"main\", \u0026datawarehouse.DeploymentArgs{\n\t\t\tName:         pulumi.String(\"my-datawarehouse\"),\n\t\t\tVersion:      pulumi.String(\"v25\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tCpuMin:       pulumi.Int(2),\n\t\t\tCpuMax:       pulumi.Int(4),\n\t\t\tRamPerCpu:    pulumi.Int(4),\n\t\t\tPassword:     pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datawarehouse.NewUser(ctx, \"admin\", \u0026datawarehouse.UserArgs{\n\t\t\tDeploymentId: main.ID(),\n\t\t\tName:         pulumi.String(\"admin_user\"),\n\t\t\tPassword:     pulumi.String(\"admin_password_456\"),\n\t\t\tIsAdmin:      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.scaleway.datawarehouse.Deployment;\nimport com.pulumi.scaleway.datawarehouse.DeploymentArgs;\nimport com.pulumi.scaleway.datawarehouse.User;\nimport com.pulumi.scaleway.datawarehouse.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Deployment(\"main\", DeploymentArgs.builder()\n            .name(\"my-datawarehouse\")\n            .version(\"v25\")\n            .replicaCount(1)\n            .cpuMin(2)\n            .cpuMax(4)\n            .ramPerCpu(4)\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var admin = new User(\"admin\", UserArgs.builder()\n            .deploymentId(main.id())\n            .name(\"admin_user\")\n            .password(\"admin_password_456\")\n            .isAdmin(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:datawarehouse:Deployment\n    properties:\n      name: my-datawarehouse\n      version: v25\n      replicaCount: 1\n      cpuMin: 2\n      cpuMax: 4\n      ramPerCpu: 4\n      password: thiZ_is_v\u0026ry_s3cret\n  admin:\n    type: scaleway:datawarehouse:User\n    properties:\n      deploymentId: ${main.id}\n      name: admin_user\n      password: admin_password_456\n      isAdmin: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nData Warehouse users can be imported using the `{region}/{deployment_id}/{name}`, e.g.\n\n```sh\n$ pulumi import scaleway:datawarehouse/user:User main fr-par/11111111-1111-1111-1111-111111111111/my_user\n```\n\n",
            "properties": {
                "deploymentId": {
                    "type": "string",
                    "description": "ID of the Data Warehouse deployment to which this user belongs.\n"
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Whether the user has administrator privileges. 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"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the ClickHouse user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the ClickHouse user.\n",
                    "secret": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the user should be created.\n"
                }
            },
            "required": [
                "deploymentId",
                "name",
                "password"
            ],
            "inputProperties": {
                "deploymentId": {
                    "type": "string",
                    "description": "ID of the Data Warehouse deployment to which this user belongs.\n",
                    "willReplaceOnChanges": true
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Whether the user has administrator privileges. 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"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the ClickHouse user.\n",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "Password for the ClickHouse user.\n",
                    "secret": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the user should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "deploymentId",
                "password"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering User resources.\n",
                "properties": {
                    "deploymentId": {
                        "type": "string",
                        "description": "ID of the Data Warehouse deployment to which this user belongs.\n",
                        "willReplaceOnChanges": true
                    },
                    "isAdmin": {
                        "type": "boolean",
                        "description": "Whether the user has administrator privileges. 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"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the ClickHouse user.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the ClickHouse user.\n",
                        "secret": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the user should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:domain/record:Record": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Record`\" pulumi-lang-dotnet=\"`scaleway.domain.Record`\" pulumi-lang-go=\"`domain.Record`\" pulumi-lang-python=\"`domain.Record`\" pulumi-lang-yaml=\"`scaleway.domain.Record`\" pulumi-lang-java=\"`scaleway.domain.Record`\"\u003e`scaleway.domain.Record`\u003c/span\u003e resource allows you to create and manage DNS records for Scaleway domains.\n\nRefer to the Domains and DNS [product documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and [API documentation](https://www.scaleway.com/en/developers/api/domains-and-dns/) for more information.\n\n## Example Usage\n\n### Create basic DNS records\n\nThe following commands allow you to:\n\n- create an A record for the `www.domain.tld` domain, pointing to `1.2.3.4` and another one pointing to `1.2.3.5`\n\n- create an MX record with the `mx.online.net.` mail server and a priority of 10, and another one with the `mx-cache.online.net.` mail server and a priority of 20\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.domain.Record(\"www\", {\n    dnsZone: \"domain.tld\",\n    name: \"www\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n});\nconst www2 = new scaleway.domain.Record(\"www2\", {\n    dnsZone: \"domain.tld\",\n    name: \"www\",\n    type: \"A\",\n    data: \"1.2.3.5\",\n    ttl: 3600,\n});\nconst mx = new scaleway.domain.Record(\"mx\", {\n    dnsZone: \"domain.tld\",\n    name: \"\",\n    type: \"MX\",\n    data: \"mx.online.net.\",\n    ttl: 3600,\n    priority: 10,\n});\nconst mx2 = new scaleway.domain.Record(\"mx2\", {\n    dnsZone: \"domain.tld\",\n    name: \"\",\n    type: \"MX\",\n    data: \"mx-cache.online.net.\",\n    ttl: 3600,\n    priority: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.domain.Record(\"www\",\n    dns_zone=\"domain.tld\",\n    name=\"www\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600)\nwww2 = scaleway.domain.Record(\"www2\",\n    dns_zone=\"domain.tld\",\n    name=\"www\",\n    type=\"A\",\n    data=\"1.2.3.5\",\n    ttl=3600)\nmx = scaleway.domain.Record(\"mx\",\n    dns_zone=\"domain.tld\",\n    name=\"\",\n    type=\"MX\",\n    data=\"mx.online.net.\",\n    ttl=3600,\n    priority=10)\nmx2 = scaleway.domain.Record(\"mx2\",\n    dns_zone=\"domain.tld\",\n    name=\"\",\n    type=\"MX\",\n    data=\"mx-cache.online.net.\",\n    ttl=3600,\n    priority=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var www = new Scaleway.Domain.Record(\"www\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n    });\n\n    var www2 = new Scaleway.Domain.Record(\"www2\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = \"1.2.3.5\",\n        Ttl = 3600,\n    });\n\n    var mx = new Scaleway.Domain.Record(\"mx\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"\",\n        Type = \"MX\",\n        Data = \"mx.online.net.\",\n        Ttl = 3600,\n        Priority = 10,\n    });\n\n    var mx2 = new Scaleway.Domain.Record(\"mx2\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"\",\n        Type = \"MX\",\n        Data = \"mx-cache.online.net.\",\n        Ttl = 3600,\n        Priority = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRecord(ctx, \"www\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"www2\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.5\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"domain.tld\"),\n\t\t\tName:     pulumi.String(\"\"),\n\t\t\tType:     pulumi.String(\"MX\"),\n\t\t\tData:     pulumi.String(\"mx.online.net.\"),\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx2\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"domain.tld\"),\n\t\t\tName:     pulumi.String(\"\"),\n\t\t\tType:     pulumi.String(\"MX\"),\n\t\t\tData:     pulumi.String(\"mx-cache.online.net.\"),\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(20),\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.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 www = new Record(\"www\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .build());\n\n        var www2 = new Record(\"www2\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(\"1.2.3.5\")\n            .ttl(3600)\n            .build());\n\n        var mx = new Record(\"mx\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"\")\n            .type(\"MX\")\n            .data(\"mx.online.net.\")\n            .ttl(3600)\n            .priority(10)\n            .build());\n\n        var mx2 = new Record(\"mx2\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"\")\n            .type(\"MX\")\n            .data(\"mx-cache.online.net.\")\n            .ttl(3600)\n            .priority(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  www:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: www\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n  www2:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: www\n      type: A\n      data: 1.2.3.5\n      ttl: 3600\n  mx:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: \"\"\n      type: MX\n      data: mx.online.net.\n      ttl: 3600\n      priority: 10\n  mx2:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: \"\"\n      type: MX\n      data: mx-cache.online.net.\n      ttl: 3600\n      priority: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create dynamic records\n\nThe following commands allow you to:\n\n- create a Geo IP record for `images.domain.tld` that points to different IPs based on the user's location: `1.2.3.5` for users in France (EU), and `4.3.2.1` for users in North America (NA)\n\n- create an HTTP service record for `app.domain.tld` that checks the health of specified IPs and responds based on their status.\n\n- create view-based records for `db.domain.tld` that resolve differently based on the client's subnet.\n\n- create a weighted record for `web.domain.tld` that directs traffic to different IPs based on their weights.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst geoIp = new scaleway.domain.Record(\"geo_ip\", {\n    dnsZone: \"domain.tld\",\n    name: \"images\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    geoIp: {\n        matches: [\n            {\n                continents: [\"EU\"],\n                countries: [\"FR\"],\n                data: \"1.2.3.5\",\n            },\n            {\n                continents: [\"NA\"],\n                data: \"4.3.2.1\",\n            },\n        ],\n    },\n});\nconst httpService = new scaleway.domain.Record(\"http_service\", {\n    dnsZone: \"domain.tld\",\n    name: \"app\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    httpService: {\n        ips: [\n            \"1.2.3.5\",\n            \"1.2.3.6\",\n        ],\n        mustContain: \"up\",\n        url: \"http://mywebsite.com/health\",\n        userAgent: \"scw_service_up\",\n        strategy: \"hashed\",\n    },\n});\nconst view = new scaleway.domain.Record(\"view\", {\n    dnsZone: \"domain.tld\",\n    name: \"db\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    views: [\n        {\n            subnet: \"100.0.0.0/16\",\n            data: \"1.2.3.5\",\n        },\n        {\n            subnet: \"100.1.0.0/16\",\n            data: \"1.2.3.6\",\n        },\n    ],\n});\nconst weighted = new scaleway.domain.Record(\"weighted\", {\n    dnsZone: \"domain.tld\",\n    name: \"web\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    weighteds: [\n        {\n            ip: \"1.2.3.5\",\n            weight: 1,\n        },\n        {\n            ip: \"1.2.3.6\",\n            weight: 2,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ngeo_ip = scaleway.domain.Record(\"geo_ip\",\n    dns_zone=\"domain.tld\",\n    name=\"images\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    geo_ip={\n        \"matches\": [\n            {\n                \"continents\": [\"EU\"],\n                \"countries\": [\"FR\"],\n                \"data\": \"1.2.3.5\",\n            },\n            {\n                \"continents\": [\"NA\"],\n                \"data\": \"4.3.2.1\",\n            },\n        ],\n    })\nhttp_service = scaleway.domain.Record(\"http_service\",\n    dns_zone=\"domain.tld\",\n    name=\"app\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    http_service={\n        \"ips\": [\n            \"1.2.3.5\",\n            \"1.2.3.6\",\n        ],\n        \"must_contain\": \"up\",\n        \"url\": \"http://mywebsite.com/health\",\n        \"user_agent\": \"scw_service_up\",\n        \"strategy\": \"hashed\",\n    })\nview = scaleway.domain.Record(\"view\",\n    dns_zone=\"domain.tld\",\n    name=\"db\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    views=[\n        {\n            \"subnet\": \"100.0.0.0/16\",\n            \"data\": \"1.2.3.5\",\n        },\n        {\n            \"subnet\": \"100.1.0.0/16\",\n            \"data\": \"1.2.3.6\",\n        },\n    ])\nweighted = scaleway.domain.Record(\"weighted\",\n    dns_zone=\"domain.tld\",\n    name=\"web\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    weighteds=[\n        {\n            \"ip\": \"1.2.3.5\",\n            \"weight\": 1,\n        },\n        {\n            \"ip\": \"1.2.3.6\",\n            \"weight\": 2,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var geoIp = new Scaleway.Domain.Record(\"geo_ip\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"images\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        GeoIp = new Scaleway.Domain.Inputs.RecordGeoIpArgs\n        {\n            Matches = new[]\n            {\n                new Scaleway.Domain.Inputs.RecordGeoIpMatchArgs\n                {\n                    Continents = new[]\n                    {\n                        \"EU\",\n                    },\n                    Countries = new[]\n                    {\n                        \"FR\",\n                    },\n                    Data = \"1.2.3.5\",\n                },\n                new Scaleway.Domain.Inputs.RecordGeoIpMatchArgs\n                {\n                    Continents = new[]\n                    {\n                        \"NA\",\n                    },\n                    Data = \"4.3.2.1\",\n                },\n            },\n        },\n    });\n\n    var httpService = new Scaleway.Domain.Record(\"http_service\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"app\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        HttpService = new Scaleway.Domain.Inputs.RecordHttpServiceArgs\n        {\n            Ips = new[]\n            {\n                \"1.2.3.5\",\n                \"1.2.3.6\",\n            },\n            MustContain = \"up\",\n            Url = \"http://mywebsite.com/health\",\n            UserAgent = \"scw_service_up\",\n            Strategy = \"hashed\",\n        },\n    });\n\n    var view = new Scaleway.Domain.Record(\"view\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"db\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        Views = new[]\n        {\n            new Scaleway.Domain.Inputs.RecordViewArgs\n            {\n                Subnet = \"100.0.0.0/16\",\n                Data = \"1.2.3.5\",\n            },\n            new Scaleway.Domain.Inputs.RecordViewArgs\n            {\n                Subnet = \"100.1.0.0/16\",\n                Data = \"1.2.3.6\",\n            },\n        },\n    });\n\n    var weighted = new Scaleway.Domain.Record(\"weighted\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"web\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        Weighteds = new[]\n        {\n            new Scaleway.Domain.Inputs.RecordWeightedArgs\n            {\n                Ip = \"1.2.3.5\",\n                Weight = 1,\n            },\n            new Scaleway.Domain.Inputs.RecordWeightedArgs\n            {\n                Ip = \"1.2.3.6\",\n                Weight = 2,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRecord(ctx, \"geo_ip\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"images\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tGeoIp: \u0026domain.RecordGeoIpArgs{\n\t\t\t\tMatches: domain.RecordGeoIpMatchArray{\n\t\t\t\t\t\u0026domain.RecordGeoIpMatchArgs{\n\t\t\t\t\t\tContinents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"EU\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCountries: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"FR\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tData: pulumi.String(\"1.2.3.5\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026domain.RecordGeoIpMatchArgs{\n\t\t\t\t\t\tContinents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"NA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tData: pulumi.String(\"4.3.2.1\"),\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 = domain.NewRecord(ctx, \"http_service\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"app\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tHttpService: \u0026domain.RecordHttpServiceArgs{\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1.2.3.5\"),\n\t\t\t\t\tpulumi.String(\"1.2.3.6\"),\n\t\t\t\t},\n\t\t\t\tMustContain: pulumi.String(\"up\"),\n\t\t\t\tUrl:         pulumi.String(\"http://mywebsite.com/health\"),\n\t\t\t\tUserAgent:   pulumi.String(\"scw_service_up\"),\n\t\t\t\tStrategy:    pulumi.String(\"hashed\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"view\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"db\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tViews: domain.RecordViewArray{\n\t\t\t\t\u0026domain.RecordViewArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"100.0.0.0/16\"),\n\t\t\t\t\tData:   pulumi.String(\"1.2.3.5\"),\n\t\t\t\t},\n\t\t\t\t\u0026domain.RecordViewArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"100.1.0.0/16\"),\n\t\t\t\t\tData:   pulumi.String(\"1.2.3.6\"),\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 = domain.NewRecord(ctx, \"weighted\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"web\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tWeighteds: domain.RecordWeightedArray{\n\t\t\t\t\u0026domain.RecordWeightedArgs{\n\t\t\t\t\tIp:     pulumi.String(\"1.2.3.5\"),\n\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026domain.RecordWeightedArgs{\n\t\t\t\t\tIp:     pulumi.String(\"1.2.3.6\"),\n\t\t\t\t\tWeight: pulumi.Int(2),\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.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordGeoIpArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordHttpServiceArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordViewArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordWeightedArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 geoIp = new Record(\"geoIp\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"images\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .geoIp(RecordGeoIpArgs.builder()\n                .matches(                \n                    RecordGeoIpMatchArgs.builder()\n                        .continents(\"EU\")\n                        .countries(\"FR\")\n                        .data(\"1.2.3.5\")\n                        .build(),\n                    RecordGeoIpMatchArgs.builder()\n                        .continents(\"NA\")\n                        .data(\"4.3.2.1\")\n                        .build())\n                .build())\n            .build());\n\n        var httpService = new Record(\"httpService\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"app\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .httpService(RecordHttpServiceArgs.builder()\n                .ips(                \n                    \"1.2.3.5\",\n                    \"1.2.3.6\")\n                .mustContain(\"up\")\n                .url(\"http://mywebsite.com/health\")\n                .userAgent(\"scw_service_up\")\n                .strategy(\"hashed\")\n                .build())\n            .build());\n\n        var view = new Record(\"view\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"db\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .views(            \n                RecordViewArgs.builder()\n                    .subnet(\"100.0.0.0/16\")\n                    .data(\"1.2.3.5\")\n                    .build(),\n                RecordViewArgs.builder()\n                    .subnet(\"100.1.0.0/16\")\n                    .data(\"1.2.3.6\")\n                    .build())\n            .build());\n\n        var weighted = new Record(\"weighted\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"web\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .weighteds(            \n                RecordWeightedArgs.builder()\n                    .ip(\"1.2.3.5\")\n                    .weight(1)\n                    .build(),\n                RecordWeightedArgs.builder()\n                    .ip(\"1.2.3.6\")\n                    .weight(2)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  geoIp:\n    type: scaleway:domain:Record\n    name: geo_ip\n    properties:\n      dnsZone: domain.tld\n      name: images\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      geoIp:\n        matches:\n          - continents:\n              - EU\n            countries:\n              - FR\n            data: 1.2.3.5\n          - continents:\n              - NA\n            data: 4.3.2.1\n  httpService:\n    type: scaleway:domain:Record\n    name: http_service\n    properties:\n      dnsZone: domain.tld\n      name: app\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      httpService:\n        ips:\n          - 1.2.3.5\n          - 1.2.3.6\n        mustContain: up\n        url: http://mywebsite.com/health\n        userAgent: scw_service_up\n        strategy: hashed\n  view:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: db\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      views:\n        - subnet: 100.0.0.0/16\n          data: 1.2.3.5\n        - subnet: 100.1.0.0/16\n          data: 1.2.3.6\n  weighted:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: web\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      weighteds:\n        - ip: 1.2.3.5\n          weight: 1\n        - ip: 1.2.3.6\n          weight: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an Instance and add records with the new Instance IP\n\nThe following commands allow you to:\n\n- create a Scaleway Instance\n- assign The Instance's IP address to various DNS records for a specified DNS zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\n// Your project ID.\nconst projectId = config.require(\"projectId\");\n// The DNS Zone used for testing records.\nconst dnsZone = config.require(\"dnsZone\");\nconst publicIp = new scaleway.instance.Ip(\"public_ip\", {projectId: projectId});\nconst web = new scaleway.instance.Server(\"web\", {\n    projectId: projectId,\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    tags: [\n        \"front\",\n        \"web\",\n    ],\n    ipId: publicIp.id,\n    rootVolume: {\n        sizeInGb: 20,\n    },\n});\nconst webA = new scaleway.domain.Record(\"web_A\", {\n    dnsZone: dnsZone,\n    name: \"web\",\n    type: \"A\",\n    data: web.publicIp,\n    ttl: 3600,\n});\nconst webCname = new scaleway.domain.Record(\"web_cname\", {\n    dnsZone: dnsZone,\n    name: \"www\",\n    type: \"CNAME\",\n    data: `web.${dnsZone}.`,\n    ttl: 3600,\n});\nconst webAlias = new scaleway.domain.Record(\"web_alias\", {\n    dnsZone: dnsZone,\n    name: \"\",\n    type: \"ALIAS\",\n    data: `web.${dnsZone}.`,\n    ttl: 3600,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\n# Your project ID.\nproject_id = config.require(\"projectId\")\n# The DNS Zone used for testing records.\ndns_zone = config.require(\"dnsZone\")\npublic_ip = scaleway.instance.Ip(\"public_ip\", project_id=project_id)\nweb = scaleway.instance.Server(\"web\",\n    project_id=project_id,\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    tags=[\n        \"front\",\n        \"web\",\n    ],\n    ip_id=public_ip.id,\n    root_volume={\n        \"size_in_gb\": 20,\n    })\nweb_a = scaleway.domain.Record(\"web_A\",\n    dns_zone=dns_zone,\n    name=\"web\",\n    type=\"A\",\n    data=web.public_ip,\n    ttl=3600)\nweb_cname = scaleway.domain.Record(\"web_cname\",\n    dns_zone=dns_zone,\n    name=\"www\",\n    type=\"CNAME\",\n    data=f\"web.{dns_zone}.\",\n    ttl=3600)\nweb_alias = scaleway.domain.Record(\"web_alias\",\n    dns_zone=dns_zone,\n    name=\"\",\n    type=\"ALIAS\",\n    data=f\"web.{dns_zone}.\",\n    ttl=3600)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    // Your project ID.\n    var projectId = config.Require(\"projectId\");\n    // The DNS Zone used for testing records.\n    var dnsZone = config.Require(\"dnsZone\");\n    var publicIp = new Scaleway.Instance.Ip(\"public_ip\", new()\n    {\n        ProjectId = projectId,\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        ProjectId = projectId,\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        Tags = new[]\n        {\n            \"front\",\n            \"web\",\n        },\n        IpId = publicIp.Id,\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 20,\n        },\n    });\n\n    var webA = new Scaleway.Domain.Record(\"web_A\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"web\",\n        Type = \"A\",\n        Data = web.PublicIp,\n        Ttl = 3600,\n    });\n\n    var webCname = new Scaleway.Domain.Record(\"web_cname\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"www\",\n        Type = \"CNAME\",\n        Data = $\"web.{dnsZone}.\",\n        Ttl = 3600,\n    });\n\n    var webAlias = new Scaleway.Domain.Record(\"web_alias\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"\",\n        Type = \"ALIAS\",\n        Data = $\"web.{dnsZone}.\",\n        Ttl = 3600,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\t// Your project ID.\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\t// The DNS Zone used for testing records.\n\t\tdnsZone := cfg.Require(\"dnsZone\")\n\t\tpublicIp, err := instance.NewIp(ctx, \"public_ip\", \u0026instance.IpArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(projectId)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tweb, err := instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(projectId)),\n\t\t\tType:      pulumi.String(\"DEV1-S\"),\n\t\t\tImage:     pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"front\"),\n\t\t\t\tpulumi.String(\"web\"),\n\t\t\t},\n\t\t\tIpId: publicIp.ID(),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(20),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"web\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    web.PublicIp,\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_cname\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"CNAME\"),\n\t\t\tData:    pulumi.Sprintf(\"web.%v.\", dnsZone),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_alias\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"\"),\n\t\t\tType:    pulumi.String(\"ALIAS\"),\n\t\t\tData:    pulumi.Sprintf(\"web.%v.\", dnsZone),\n\t\t\tTtl:     pulumi.Int(3600),\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.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.IpArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var projectId = config.require(\"projectId\");\n        final var dnsZone = config.require(\"dnsZone\");\n        var publicIp = new Ip(\"publicIp\", IpArgs.builder()\n            .projectId(projectId)\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .projectId(projectId)\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .tags(            \n                \"front\",\n                \"web\")\n            .ipId(publicIp.id())\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(20)\n                .build())\n            .build());\n\n        var webA = new Record(\"webA\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"web\")\n            .type(\"A\")\n            .data(web.publicIp())\n            .ttl(3600)\n            .build());\n\n        var webCname = new Record(\"webCname\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"www\")\n            .type(\"CNAME\")\n            .data(String.format(\"web.%s.\", dnsZone))\n            .ttl(3600)\n            .build());\n\n        var webAlias = new Record(\"webAlias\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"\")\n            .type(\"ALIAS\")\n            .data(String.format(\"web.%s.\", dnsZone))\n            .ttl(3600)\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  projectId:\n    type: string\n  dnsZone:\n    type: string\nresources:\n  publicIp:\n    type: scaleway:instance:Ip\n    name: public_ip\n    properties:\n      projectId: ${projectId}\n  web:\n    type: scaleway:instance:Server\n    properties:\n      projectId: ${projectId}\n      type: DEV1-S\n      image: ubuntu_jammy\n      tags:\n        - front\n        - web\n      ipId: ${publicIp.id}\n      rootVolume:\n        sizeInGb: 20\n  webA:\n    type: scaleway:domain:Record\n    name: web_A\n    properties:\n      dnsZone: ${dnsZone}\n      name: web\n      type: A\n      data: ${web.publicIp}\n      ttl: 3600\n  webCname:\n    type: scaleway:domain:Record\n    name: web_cname\n    properties:\n      dnsZone: ${dnsZone}\n      name: www\n      type: CNAME\n      data: web.${dnsZone}.\n      ttl: 3600\n  webAlias:\n    type: scaleway:domain:Record\n    name: web_alias\n    properties:\n      dnsZone: ${dnsZone}\n      name: \"\"\n      type: ALIAS\n      data: web.${dnsZone}.\n      ttl: 3600\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Multiple records\n\nSome record types can have multiple data with the same name (e.g., `A`, `AAAA`, `MX`, `NS`, etc.). You can duplicate a \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Record`\" pulumi-lang-dotnet=\"`scaleway.domain.Record`\" pulumi-lang-go=\"`domain.Record`\" pulumi-lang-python=\"`domain.Record`\" pulumi-lang-yaml=\"`scaleway.domain.Record`\" pulumi-lang-java=\"`scaleway.domain.Record`\"\u003e`scaleway.domain.Record`\u003c/span\u003e  resource with the same \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 the records will be added.\n\nNote however, that some records (e.g., CNAME, multiple dynamic records of different types) must be unique.\n\n## Import\n\nThis section explains how to import a record using the `{dns_zone}/{id}` format.\n\n```sh\n$ pulumi import scaleway:domain/record:Record www subdomain.domain.tld/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "dnsZone": {
                    "type": "string",
                    "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n"
                },
                "fqdn": {
                    "type": "string",
                    "description": "The FQDN of the record.\n"
                },
                "geoIp": {
                    "$ref": "#/types/scaleway:domain/RecordGeoIp:RecordGeoIp",
                    "description": "Return record based on client localisation"
                },
                "httpService": {
                    "$ref": "#/types/scaleway:domain/RecordHttpService:RecordHttpService",
                    "description": "Return record based on client localisation"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the record (can be an empty string for a root record).\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record (mostly used with an `MX` record).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to"
                },
                "rootZone": {
                    "type": "boolean",
                    "description": "Does the DNS zone is the root zone or not"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time To Live of the record in seconds.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n"
                },
                "views": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RecordView:RecordView"
                    },
                    "description": "Return record based on client subnet"
                },
                "weighteds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RecordWeighted:RecordWeighted"
                    },
                    "description": "Return record based on weight"
                }
            },
            "required": [
                "data",
                "dnsZone",
                "fqdn",
                "name",
                "priority",
                "projectId",
                "rootZone",
                "type"
            ],
            "inputProperties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "dnsZone": {
                    "type": "string",
                    "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n",
                    "willReplaceOnChanges": true
                },
                "geoIp": {
                    "$ref": "#/types/scaleway:domain/RecordGeoIp:RecordGeoIp",
                    "description": "Return record based on client localisation"
                },
                "httpService": {
                    "$ref": "#/types/scaleway:domain/RecordHttpService:RecordHttpService",
                    "description": "Return record based on client localisation"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the record (can be an empty string for a root record).\n",
                    "willReplaceOnChanges": true
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record (mostly used with an `MX` record).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                    "willReplaceOnChanges": true
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time To Live of the record in seconds.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n",
                    "willReplaceOnChanges": true
                },
                "views": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RecordView:RecordView"
                    },
                    "description": "Return record based on client subnet"
                },
                "weighteds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RecordWeighted:RecordWeighted"
                    },
                    "description": "Return record based on weight"
                }
            },
            "requiredInputs": [
                "data",
                "dnsZone",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Record resources.\n",
                "properties": {
                    "data": {
                        "type": "string",
                        "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                    },
                    "dnsZone": {
                        "type": "string",
                        "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n",
                        "willReplaceOnChanges": true
                    },
                    "fqdn": {
                        "type": "string",
                        "description": "The FQDN of the record.\n"
                    },
                    "geoIp": {
                        "$ref": "#/types/scaleway:domain/RecordGeoIp:RecordGeoIp",
                        "description": "Return record based on client localisation"
                    },
                    "httpService": {
                        "$ref": "#/types/scaleway:domain/RecordHttpService:RecordHttpService",
                        "description": "Return record based on client localisation"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the record (can be an empty string for a root record).\n",
                        "willReplaceOnChanges": true
                    },
                    "priority": {
                        "type": "integer",
                        "description": "The priority of the record (mostly used with an `MX` record).\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "rootZone": {
                        "type": "boolean",
                        "description": "Does the DNS zone is the root zone or not"
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "Time To Live of the record in seconds.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n",
                        "willReplaceOnChanges": true
                    },
                    "views": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:domain/RecordView:RecordView"
                        },
                        "description": "Return record based on client subnet"
                    },
                    "weighteds": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:domain/RecordWeighted:RecordWeighted"
                        },
                        "description": "Return record based on weight"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/domainRecord:DomainRecord"
                }
            ]
        },
        "scaleway:domain/registration:Registration": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Registration`\" pulumi-lang-dotnet=\"`scaleway.domain.Registration`\" pulumi-lang-go=\"`domain.Registration`\" pulumi-lang-python=\"`domain.Registration`\" pulumi-lang-yaml=\"`scaleway.domain.Registration`\" pulumi-lang-java=\"`scaleway.domain.Registration`\"\u003e`scaleway.domain.Registration`\u003c/span\u003e resource allows you to purchase and manage domain registrations with Scaleway. Using this resource you can register one or more domains for a specified duration, configure auto-renewal and DNSSEC options, and set contact information. You can supply an owner contact either by providing an existing contact ID or by specifying the complete contact details. The resource automatically returns additional contact information (administrative and technical) as provided by the Scaleway API.\n\nRefer to the [Domains and DNS documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and the [API documentation](https://developers.scaleway.com/) for more details.\n\n## Example Usage\n\n### Purchase a Single Domain\n\nThe following example purchases a domain with a one-year registration period and specifies the owner contact details. Administrative and technical contacts are returned by the API.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst test = new scaleway.domain.Registration(\"test\", {\n    domainNames: [\"example.com\"],\n    durationInYears: 1,\n    ownerContact: {\n        legalForm: \"individual\",\n        firstname: \"John\",\n        lastname: \"DOE\",\n        email: \"john.doe@example.com\",\n        phoneNumber: \"+1.23456789\",\n        addressLine1: \"123 Main Street\",\n        city: \"Paris\",\n        zip: \"75001\",\n        country: \"FR\",\n        vatIdentificationCode: \"FR12345678901\",\n        companyIdentificationCode: \"123456789\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntest = scaleway.domain.Registration(\"test\",\n    domain_names=[\"example.com\"],\n    duration_in_years=1,\n    owner_contact={\n        \"legal_form\": \"individual\",\n        \"firstname\": \"John\",\n        \"lastname\": \"DOE\",\n        \"email\": \"john.doe@example.com\",\n        \"phone_number\": \"+1.23456789\",\n        \"address_line1\": \"123 Main Street\",\n        \"city\": \"Paris\",\n        \"zip\": \"75001\",\n        \"country\": \"FR\",\n        \"vat_identification_code\": \"FR12345678901\",\n        \"company_identification_code\": \"123456789\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Scaleway.Domain.Registration(\"test\", new()\n    {\n        DomainNames = new[]\n        {\n            \"example.com\",\n        },\n        DurationInYears = 1,\n        OwnerContact = new Scaleway.Domain.Inputs.RegistrationOwnerContactArgs\n        {\n            LegalForm = \"individual\",\n            Firstname = \"John\",\n            Lastname = \"DOE\",\n            Email = \"john.doe@example.com\",\n            PhoneNumber = \"+1.23456789\",\n            AddressLine1 = \"123 Main Street\",\n            City = \"Paris\",\n            Zip = \"75001\",\n            Country = \"FR\",\n            VatIdentificationCode = \"FR12345678901\",\n            CompanyIdentificationCode = \"123456789\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRegistration(ctx, \"test\", \u0026domain.RegistrationArgs{\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t\tDurationInYears: pulumi.Int(1),\n\t\t\tOwnerContact: \u0026domain.RegistrationOwnerContactArgs{\n\t\t\t\tLegalForm:                 pulumi.String(\"individual\"),\n\t\t\t\tFirstname:                 pulumi.String(\"John\"),\n\t\t\t\tLastname:                  pulumi.String(\"DOE\"),\n\t\t\t\tEmail:                     pulumi.String(\"john.doe@example.com\"),\n\t\t\t\tPhoneNumber:               pulumi.String(\"+1.23456789\"),\n\t\t\t\tAddressLine1:              pulumi.String(\"123 Main Street\"),\n\t\t\t\tCity:                      pulumi.String(\"Paris\"),\n\t\t\t\tZip:                       pulumi.String(\"75001\"),\n\t\t\t\tCountry:                   pulumi.String(\"FR\"),\n\t\t\t\tVatIdentificationCode:     pulumi.String(\"FR12345678901\"),\n\t\t\t\tCompanyIdentificationCode: pulumi.String(\"123456789\"),\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.scaleway.domain.Registration;\nimport com.pulumi.scaleway.domain.RegistrationArgs;\nimport com.pulumi.scaleway.domain.inputs.RegistrationOwnerContactArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Registration(\"test\", RegistrationArgs.builder()\n            .domainNames(\"example.com\")\n            .durationInYears(1)\n            .ownerContact(RegistrationOwnerContactArgs.builder()\n                .legalForm(\"individual\")\n                .firstname(\"John\")\n                .lastname(\"DOE\")\n                .email(\"john.doe@example.com\")\n                .phoneNumber(\"+1.23456789\")\n                .addressLine1(\"123 Main Street\")\n                .city(\"Paris\")\n                .zip(\"75001\")\n                .country(\"FR\")\n                .vatIdentificationCode(\"FR12345678901\")\n                .companyIdentificationCode(\"123456789\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: scaleway:domain:Registration\n    properties:\n      domainNames:\n        - example.com\n      durationInYears: 1\n      ownerContact:\n        legalForm: individual\n        firstname: John\n        lastname: DOE\n        email: john.doe@example.com\n        phoneNumber: '+1.23456789'\n        addressLine1: 123 Main Street\n        city: Paris\n        zip: '75001'\n        country: FR\n        vatIdentificationCode: FR12345678901\n        companyIdentificationCode: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Update Domain Settings\n\nYou can update the resource to enable auto-renewal and DNSSEC:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst test = new scaleway.domain.Registration(\"test\", {\n    domainNames: [\"example.com\"],\n    durationInYears: 1,\n    ownerContact: {\n        legalForm: \"individual\",\n        firstname: \"John\",\n        lastname: \"DOE\",\n        email: \"john.doe@example.com\",\n        phoneNumber: \"+1.23456789\",\n        addressLine1: \"123 Main Street\",\n        city: \"Paris\",\n        zip: \"75001\",\n        country: \"FR\",\n        vatIdentificationCode: \"FR12345678901\",\n        companyIdentificationCode: \"123456789\",\n    },\n    autoRenew: true,\n    dnssec: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntest = scaleway.domain.Registration(\"test\",\n    domain_names=[\"example.com\"],\n    duration_in_years=1,\n    owner_contact={\n        \"legal_form\": \"individual\",\n        \"firstname\": \"John\",\n        \"lastname\": \"DOE\",\n        \"email\": \"john.doe@example.com\",\n        \"phone_number\": \"+1.23456789\",\n        \"address_line1\": \"123 Main Street\",\n        \"city\": \"Paris\",\n        \"zip\": \"75001\",\n        \"country\": \"FR\",\n        \"vat_identification_code\": \"FR12345678901\",\n        \"company_identification_code\": \"123456789\",\n    },\n    auto_renew=True,\n    dnssec=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Scaleway.Domain.Registration(\"test\", new()\n    {\n        DomainNames = new[]\n        {\n            \"example.com\",\n        },\n        DurationInYears = 1,\n        OwnerContact = new Scaleway.Domain.Inputs.RegistrationOwnerContactArgs\n        {\n            LegalForm = \"individual\",\n            Firstname = \"John\",\n            Lastname = \"DOE\",\n            Email = \"john.doe@example.com\",\n            PhoneNumber = \"+1.23456789\",\n            AddressLine1 = \"123 Main Street\",\n            City = \"Paris\",\n            Zip = \"75001\",\n            Country = \"FR\",\n            VatIdentificationCode = \"FR12345678901\",\n            CompanyIdentificationCode = \"123456789\",\n        },\n        AutoRenew = true,\n        Dnssec = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRegistration(ctx, \"test\", \u0026domain.RegistrationArgs{\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t\tDurationInYears: pulumi.Int(1),\n\t\t\tOwnerContact: \u0026domain.RegistrationOwnerContactArgs{\n\t\t\t\tLegalForm:                 pulumi.String(\"individual\"),\n\t\t\t\tFirstname:                 pulumi.String(\"John\"),\n\t\t\t\tLastname:                  pulumi.String(\"DOE\"),\n\t\t\t\tEmail:                     pulumi.String(\"john.doe@example.com\"),\n\t\t\t\tPhoneNumber:               pulumi.String(\"+1.23456789\"),\n\t\t\t\tAddressLine1:              pulumi.String(\"123 Main Street\"),\n\t\t\t\tCity:                      pulumi.String(\"Paris\"),\n\t\t\t\tZip:                       pulumi.String(\"75001\"),\n\t\t\t\tCountry:                   pulumi.String(\"FR\"),\n\t\t\t\tVatIdentificationCode:     pulumi.String(\"FR12345678901\"),\n\t\t\t\tCompanyIdentificationCode: pulumi.String(\"123456789\"),\n\t\t\t},\n\t\t\tAutoRenew: pulumi.Bool(true),\n\t\t\tDnssec:    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.scaleway.domain.Registration;\nimport com.pulumi.scaleway.domain.RegistrationArgs;\nimport com.pulumi.scaleway.domain.inputs.RegistrationOwnerContactArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Registration(\"test\", RegistrationArgs.builder()\n            .domainNames(\"example.com\")\n            .durationInYears(1)\n            .ownerContact(RegistrationOwnerContactArgs.builder()\n                .legalForm(\"individual\")\n                .firstname(\"John\")\n                .lastname(\"DOE\")\n                .email(\"john.doe@example.com\")\n                .phoneNumber(\"+1.23456789\")\n                .addressLine1(\"123 Main Street\")\n                .city(\"Paris\")\n                .zip(\"75001\")\n                .country(\"FR\")\n                .vatIdentificationCode(\"FR12345678901\")\n                .companyIdentificationCode(\"123456789\")\n                .build())\n            .autoRenew(true)\n            .dnssec(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: scaleway:domain:Registration\n    properties:\n      domainNames:\n        - example.com\n      durationInYears: 1\n      ownerContact:\n        legalForm: individual\n        firstname: John\n        lastname: DOE\n        email: john.doe@example.com\n        phoneNumber: '+1.23456789'\n        addressLine1: 123 Main Street\n        city: Paris\n        zip: '75001'\n        country: FR\n        vatIdentificationCode: FR12345678901\n        companyIdentificationCode: '123456789'\n      autoRenew: true\n      dnssec: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Purchase Multiple Domains\n\nThe following example registers several domains in one go:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst multi = new scaleway.domain.Registration(\"multi\", {\n    domainNames: [\n        \"domain1.com\",\n        \"domain2.com\",\n        \"domain3.com\",\n    ],\n    durationInYears: 1,\n    ownerContact: {\n        legalForm: \"individual\",\n        firstname: \"John\",\n        lastname: \"DOE\",\n        email: \"john.doe@example.com\",\n        phoneNumber: \"+1.23456789\",\n        addressLine1: \"123 Main Street\",\n        city: \"Paris\",\n        zip: \"75001\",\n        country: \"FR\",\n        vatIdentificationCode: \"FR12345678901\",\n        companyIdentificationCode: \"123456789\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmulti = scaleway.domain.Registration(\"multi\",\n    domain_names=[\n        \"domain1.com\",\n        \"domain2.com\",\n        \"domain3.com\",\n    ],\n    duration_in_years=1,\n    owner_contact={\n        \"legal_form\": \"individual\",\n        \"firstname\": \"John\",\n        \"lastname\": \"DOE\",\n        \"email\": \"john.doe@example.com\",\n        \"phone_number\": \"+1.23456789\",\n        \"address_line1\": \"123 Main Street\",\n        \"city\": \"Paris\",\n        \"zip\": \"75001\",\n        \"country\": \"FR\",\n        \"vat_identification_code\": \"FR12345678901\",\n        \"company_identification_code\": \"123456789\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var multi = new Scaleway.Domain.Registration(\"multi\", new()\n    {\n        DomainNames = new[]\n        {\n            \"domain1.com\",\n            \"domain2.com\",\n            \"domain3.com\",\n        },\n        DurationInYears = 1,\n        OwnerContact = new Scaleway.Domain.Inputs.RegistrationOwnerContactArgs\n        {\n            LegalForm = \"individual\",\n            Firstname = \"John\",\n            Lastname = \"DOE\",\n            Email = \"john.doe@example.com\",\n            PhoneNumber = \"+1.23456789\",\n            AddressLine1 = \"123 Main Street\",\n            City = \"Paris\",\n            Zip = \"75001\",\n            Country = \"FR\",\n            VatIdentificationCode = \"FR12345678901\",\n            CompanyIdentificationCode = \"123456789\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRegistration(ctx, \"multi\", \u0026domain.RegistrationArgs{\n\t\t\tDomainNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"domain1.com\"),\n\t\t\t\tpulumi.String(\"domain2.com\"),\n\t\t\t\tpulumi.String(\"domain3.com\"),\n\t\t\t},\n\t\t\tDurationInYears: pulumi.Int(1),\n\t\t\tOwnerContact: \u0026domain.RegistrationOwnerContactArgs{\n\t\t\t\tLegalForm:                 pulumi.String(\"individual\"),\n\t\t\t\tFirstname:                 pulumi.String(\"John\"),\n\t\t\t\tLastname:                  pulumi.String(\"DOE\"),\n\t\t\t\tEmail:                     pulumi.String(\"john.doe@example.com\"),\n\t\t\t\tPhoneNumber:               pulumi.String(\"+1.23456789\"),\n\t\t\t\tAddressLine1:              pulumi.String(\"123 Main Street\"),\n\t\t\t\tCity:                      pulumi.String(\"Paris\"),\n\t\t\t\tZip:                       pulumi.String(\"75001\"),\n\t\t\t\tCountry:                   pulumi.String(\"FR\"),\n\t\t\t\tVatIdentificationCode:     pulumi.String(\"FR12345678901\"),\n\t\t\t\tCompanyIdentificationCode: pulumi.String(\"123456789\"),\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.scaleway.domain.Registration;\nimport com.pulumi.scaleway.domain.RegistrationArgs;\nimport com.pulumi.scaleway.domain.inputs.RegistrationOwnerContactArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 multi = new Registration(\"multi\", RegistrationArgs.builder()\n            .domainNames(            \n                \"domain1.com\",\n                \"domain2.com\",\n                \"domain3.com\")\n            .durationInYears(1)\n            .ownerContact(RegistrationOwnerContactArgs.builder()\n                .legalForm(\"individual\")\n                .firstname(\"John\")\n                .lastname(\"DOE\")\n                .email(\"john.doe@example.com\")\n                .phoneNumber(\"+1.23456789\")\n                .addressLine1(\"123 Main Street\")\n                .city(\"Paris\")\n                .zip(\"75001\")\n                .country(\"FR\")\n                .vatIdentificationCode(\"FR12345678901\")\n                .companyIdentificationCode(\"123456789\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  multi:\n    type: scaleway:domain:Registration\n    properties:\n      domainNames:\n        - domain1.com\n        - domain2.com\n        - domain3.com\n      durationInYears: 1\n      ownerContact:\n        legalForm: individual\n        firstname: John\n        lastname: DOE\n        email: john.doe@example.com\n        phoneNumber: '+1.23456789'\n        addressLine1: 123 Main Street\n        city: Paris\n        zip: '75001'\n        country: FR\n        vatIdentificationCode: FR12345678901\n        companyIdentificationCode: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Contact Blocks\n\nEach contact block supports the following attributes:\n\n- \u003cspan pulumi-lang-nodejs=\"`legalForm`\" pulumi-lang-dotnet=\"`LegalForm`\" pulumi-lang-go=\"`legalForm`\" pulumi-lang-python=\"`legal_form`\" pulumi-lang-yaml=\"`legalForm`\" pulumi-lang-java=\"`legalForm`\"\u003e`legalForm`\u003c/span\u003e (Required, String): Legal form of the contact.\n- \u003cspan pulumi-lang-nodejs=\"`firstname`\" pulumi-lang-dotnet=\"`Firstname`\" pulumi-lang-go=\"`firstname`\" pulumi-lang-python=\"`firstname`\" pulumi-lang-yaml=\"`firstname`\" pulumi-lang-java=\"`firstname`\"\u003e`firstname`\u003c/span\u003e (Required, String): First name.\n- \u003cspan pulumi-lang-nodejs=\"`lastname`\" pulumi-lang-dotnet=\"`Lastname`\" pulumi-lang-go=\"`lastname`\" pulumi-lang-python=\"`lastname`\" pulumi-lang-yaml=\"`lastname`\" pulumi-lang-java=\"`lastname`\"\u003e`lastname`\u003c/span\u003e (Required, String): Last name.\n- \u003cspan pulumi-lang-nodejs=\"`companyName`\" pulumi-lang-dotnet=\"`CompanyName`\" pulumi-lang-go=\"`companyName`\" pulumi-lang-python=\"`company_name`\" pulumi-lang-yaml=\"`companyName`\" pulumi-lang-java=\"`companyName`\"\u003e`companyName`\u003c/span\u003e (Optional, String): Company name.\n- \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 (Required, String): Primary email.\n- \u003cspan pulumi-lang-nodejs=\"`phoneNumber`\" pulumi-lang-dotnet=\"`PhoneNumber`\" pulumi-lang-go=\"`phoneNumber`\" pulumi-lang-python=\"`phone_number`\" pulumi-lang-yaml=\"`phoneNumber`\" pulumi-lang-java=\"`phoneNumber`\"\u003e`phoneNumber`\u003c/span\u003e (Required, String): Primary phone number.\n- \u003cspan pulumi-lang-nodejs=\"`addressLine1`\" pulumi-lang-dotnet=\"`AddressLine1`\" pulumi-lang-go=\"`addressLine1`\" pulumi-lang-python=\"`address_line_1`\" pulumi-lang-yaml=\"`addressLine1`\" pulumi-lang-java=\"`addressLine1`\"\u003e`addressLine1`\u003c/span\u003e (Required, String): Primary address.\n- \u003cspan pulumi-lang-nodejs=\"`zip`\" pulumi-lang-dotnet=\"`Zip`\" pulumi-lang-go=\"`zip`\" pulumi-lang-python=\"`zip`\" pulumi-lang-yaml=\"`zip`\" pulumi-lang-java=\"`zip`\"\u003e`zip`\u003c/span\u003e (Required, String): Postal code.\n- \u003cspan pulumi-lang-nodejs=\"`city`\" pulumi-lang-dotnet=\"`City`\" pulumi-lang-go=\"`city`\" pulumi-lang-python=\"`city`\" pulumi-lang-yaml=\"`city`\" pulumi-lang-java=\"`city`\"\u003e`city`\u003c/span\u003e (Required, String): City.\n- \u003cspan pulumi-lang-nodejs=\"`country`\" pulumi-lang-dotnet=\"`Country`\" pulumi-lang-go=\"`country`\" pulumi-lang-python=\"`country`\" pulumi-lang-yaml=\"`country`\" pulumi-lang-java=\"`country`\"\u003e`country`\u003c/span\u003e (Required, String): Country code (ISO format).\n- \u003cspan pulumi-lang-nodejs=\"`vatIdentificationCode`\" pulumi-lang-dotnet=\"`VatIdentificationCode`\" pulumi-lang-go=\"`vatIdentificationCode`\" pulumi-lang-python=\"`vat_identification_code`\" pulumi-lang-yaml=\"`vatIdentificationCode`\" pulumi-lang-java=\"`vatIdentificationCode`\"\u003e`vatIdentificationCode`\u003c/span\u003e (Required, String): VAT identification code.\n- \u003cspan pulumi-lang-nodejs=\"`companyIdentificationCode`\" pulumi-lang-dotnet=\"`CompanyIdentificationCode`\" pulumi-lang-go=\"`companyIdentificationCode`\" pulumi-lang-python=\"`company_identification_code`\" pulumi-lang-yaml=\"`companyIdentificationCode`\" pulumi-lang-java=\"`companyIdentificationCode`\"\u003e`companyIdentificationCode`\u003c/span\u003e (Required, String): Company identification code.\n\n## Import\n\nTo import an existing domain registration, use:\n\n```sh\n$ pulumi import scaleway:domain/registration:Registration test \u003cproject_id\u003e/\u003ctask_id\u003e\n```\n\nYou can use the\u003cspan pulumi-lang-nodejs=\" scaleway.domain.Registration \" pulumi-lang-dotnet=\" scaleway.domain.Registration \" pulumi-lang-go=\" domain.Registration \" pulumi-lang-python=\" domain.Registration \" pulumi-lang-yaml=\" scaleway.domain.Registration \" pulumi-lang-java=\" scaleway.domain.Registration \"\u003e scaleway.domain.Registration \u003c/span\u003edata source to look up the \u003cspan pulumi-lang-nodejs=\"`taskId`\" pulumi-lang-dotnet=\"`TaskId`\" pulumi-lang-go=\"`taskId`\" pulumi-lang-python=\"`task_id`\" pulumi-lang-yaml=\"`taskId`\" pulumi-lang-java=\"`taskId`\"\u003e`taskId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e by domain name.\n\n",
            "properties": {
                "administrativeContacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContact:RegistrationAdministrativeContact"
                    },
                    "description": ": Administrative contact information.\n"
                },
                "autoRenew": {
                    "type": "boolean",
                    "description": ": Enables or disables auto-renewal.\n"
                },
                "dnssec": {
                    "type": "boolean",
                    "description": ": Enables or disables DNSSEC.\n"
                },
                "domainNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": ": A list of domain names to be registered.\n"
                },
                "dsRecords": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationDsRecord:RegistrationDsRecord"
                    },
                    "description": "DNSSEC DS record configuration.\n"
                },
                "durationInYears": {
                    "type": "integer",
                    "description": ": The registration period in years.\n"
                },
                "ownerContact": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContact:RegistrationOwnerContact",
                    "description": ": Details of the owner contact.\n"
                },
                "ownerContactId": {
                    "type": "string",
                    "description": ": The ID of an existing owner contact.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ": The Scaleway project ID.\n"
                },
                "taskId": {
                    "type": "string",
                    "description": "ID of the task that created the domain.\n"
                },
                "technicalContacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:domain/RegistrationTechnicalContact:RegistrationTechnicalContact"
                    },
                    "description": ": Technical contact information.\n"
                }
            },
            "required": [
                "administrativeContacts",
                "domainNames",
                "dsRecords",
                "ownerContact",
                "ownerContactId",
                "projectId",
                "taskId",
                "technicalContacts"
            ],
            "inputProperties": {
                "autoRenew": {
                    "type": "boolean",
                    "description": ": Enables or disables auto-renewal.\n"
                },
                "dnssec": {
                    "type": "boolean",
                    "description": ": Enables or disables DNSSEC.\n"
                },
                "domainNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": ": A list of domain names to be registered.\n"
                },
                "durationInYears": {
                    "type": "integer",
                    "description": ": The registration period in years.\n"
                },
                "ownerContact": {
                    "$ref": "#/types/scaleway:domain/RegistrationOwnerContact:RegistrationOwnerContact",
                    "description": ": Details of the owner contact.\n"
                },
                "ownerContactId": {
                    "type": "string",
                    "description": ": The ID of an existing owner contact.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ": The Scaleway project ID.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "domainNames"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Registration resources.\n",
                "properties": {
                    "administrativeContacts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:domain/RegistrationAdministrativeContact:RegistrationAdministrativeContact"
                        },
                        "description": ": Administrative contact information.\n"
                    },
                    "autoRenew": {
                        "type": "boolean",
                        "description": ": Enables or disables auto-renewal.\n"
                    },
                    "dnssec": {
                        "type": "boolean",
                        "description": ": Enables or disables DNSSEC.\n"
                    },
                    "domainNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": ": A list of domain names to be registered.\n"
                    },
                    "dsRecords": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:domain/RegistrationDsRecord:RegistrationDsRecord"
                        },
                        "description": "DNSSEC DS record configuration.\n"
                    },
                    "durationInYears": {
                        "type": "integer",
                        "description": ": The registration period in years.\n"
                    },
                    "ownerContact": {
                        "$ref": "#/types/scaleway:domain/RegistrationOwnerContact:RegistrationOwnerContact",
                        "description": ": Details of the owner contact.\n"
                    },
                    "ownerContactId": {
                        "type": "string",
                        "description": ": The ID of an existing owner contact.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": ": The Scaleway project ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "taskId": {
                        "type": "string",
                        "description": "ID of the task that created the domain.\n"
                    },
                    "technicalContacts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:domain/RegistrationTechnicalContact:RegistrationTechnicalContact"
                        },
                        "description": ": Technical contact information.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:domain/zone:Zone": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Zone`\" pulumi-lang-dotnet=\"`scaleway.domain.Zone`\" pulumi-lang-go=\"`domain.Zone`\" pulumi-lang-python=\"`domain.Zone`\" pulumi-lang-yaml=\"`scaleway.domain.Zone`\" pulumi-lang-java=\"`scaleway.domain.Zone`\"\u003e`scaleway.domain.Zone`\u003c/span\u003e resource allows you to create and manage Scaleway DNS zones.\n\nRefer to the Domains and DNS [product documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and [API documentation](https://www.scaleway.com/en/developers/api/domains-and-dns/) for more information.\n\n## Example Usage\n\n### Create a DNS zone\n\nThe following command allows you to create a DNS zone for the `test.scaleway-terraform.com` subdomain.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst test = new scaleway.domain.Zone(\"test\", {\n    domain: \"scaleway-terraform.com\",\n    subdomain: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntest = scaleway.domain.Zone(\"test\",\n    domain=\"scaleway-terraform.com\",\n    subdomain=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Scaleway.Domain.Zone(\"test\", new()\n    {\n        Domain = \"scaleway-terraform.com\",\n        Subdomain = \"test\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewZone(ctx, \"test\", \u0026domain.ZoneArgs{\n\t\t\tDomain:    pulumi.String(\"scaleway-terraform.com\"),\n\t\t\tSubdomain: pulumi.String(\"test\"),\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.scaleway.domain.Zone;\nimport com.pulumi.scaleway.domain.ZoneArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Zone(\"test\", ZoneArgs.builder()\n            .domain(\"scaleway-terraform.com\")\n            .subdomain(\"test\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: scaleway:domain:Zone\n    properties:\n      domain: scaleway-terraform.com\n      subdomain: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a zone using the `{subdomain}.{domain}` format.\n\n```sh\n$ pulumi import scaleway:domain/zone:Zone test test.scaleway-terraform.com\n```\n\n",
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "The main domain where the DNS zone will be created.\n"
                },
                "message": {
                    "type": "string",
                    "description": "Message.\n"
                },
                "ns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of same servers for the zone.\n"
                },
                "nsDefaults": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The default list of same servers for the zone.\n"
                },
                "nsMasters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The master list of same servers for the zone.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the domain zone.\n"
                },
                "subdomain": {
                    "type": "string",
                    "description": "The name of the subdomain (zone name) to create within the domain.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time at which the DNS zone was last updated.\n"
                }
            },
            "required": [
                "domain",
                "message",
                "ns",
                "nsDefaults",
                "nsMasters",
                "projectId",
                "status",
                "subdomain",
                "updatedAt"
            ],
            "inputProperties": {
                "domain": {
                    "type": "string",
                    "description": "The main domain where the DNS zone will be created.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n",
                    "willReplaceOnChanges": true
                },
                "subdomain": {
                    "type": "string",
                    "description": "The name of the subdomain (zone name) to create within the domain.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "subdomain"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Zone resources.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "The main domain where the DNS zone will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "message": {
                        "type": "string",
                        "description": "Message.\n"
                    },
                    "ns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of same servers for the zone.\n"
                    },
                    "nsDefaults": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The default list of same servers for the zone.\n"
                    },
                    "nsMasters": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The master list of same servers for the zone.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the domain zone.\n"
                    },
                    "subdomain": {
                        "type": "string",
                        "description": "The name of the subdomain (zone name) to create within the domain.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time at which the DNS zone was last updated.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/domainZone:DomainZone"
                }
            ]
        },
        "scaleway:edgeservices/backendStage:BackendStage": {
            "description": "Creates and manages Scaleway Edge Services Backend Stages.\n\n## Example Usage\n\n### With object backend\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {\n    name: \"my-bucket-name\",\n    tags: {\n        foo: \"bar\",\n    },\n});\nconst mainPipeline = new scaleway.edgeservices.Pipeline(\"main\", {name: \"my-pipeline\"});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: mainPipeline.id,\n    s3BackendConfig: {\n        bucketName: main.name,\n        bucketRegion: \"fr-par\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\",\n    name=\"my-bucket-name\",\n    tags={\n        \"foo\": \"bar\",\n    })\nmain_pipeline = scaleway.edgeservices.Pipeline(\"main\", name=\"my-pipeline\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main_pipeline.id,\n    s3_backend_config={\n        \"bucket_name\": main.name,\n        \"bucket_region\": \"fr-par\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"my-bucket-name\",\n        Tags = \n        {\n            { \"foo\", \"bar\" },\n        },\n    });\n\n    var mainPipeline = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = mainPipeline.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = main.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket-name\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPipeline, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: mainPipeline.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   main.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"my-bucket-name\")\n            .tags(Map.of(\"foo\", \"bar\"))\n            .build());\n\n        var mainPipeline = new Pipeline(\"mainPipeline\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(mainPipeline.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(main.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-bucket-name\n      tags:\n        foo: bar\n  mainPipeline:\n    type: scaleway:edgeservices:Pipeline\n    name: main\n    properties:\n      name: my-pipeline\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${mainPipeline.id}\n      s3BackendConfig:\n        bucketName: ${main.name}\n        bucketRegion: fr-par\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With LB backend\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.loadbalancers.LoadBalancer(\"main\", {\n    ipIds: [mainScalewayLbIp.id],\n    zone: \"fr-par-1\",\n    type: \"LB-S\",\n});\nconst mainFrontend = new scaleway.loadbalancers.Frontend(\"main\", {\n    lbId: main.id,\n    backendId: mainScalewayLbBackend.id,\n    name: \"frontend01\",\n    inboundPort: 443,\n    certificateIds: [cert01.id],\n});\nconst mainPipeline = new scaleway.edgeservices.Pipeline(\"main\", {name: \"my-pipeline\"});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: mainPipeline.id,\n    lbBackendConfigs: [{\n        lbConfig: {\n            id: main.id,\n            frontendId: id,\n            isSsl: true,\n            zone: \"fr-par-1\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.loadbalancers.LoadBalancer(\"main\",\n    ip_ids=[main_scaleway_lb_ip[\"id\"]],\n    zone=\"fr-par-1\",\n    type=\"LB-S\")\nmain_frontend = scaleway.loadbalancers.Frontend(\"main\",\n    lb_id=main.id,\n    backend_id=main_scaleway_lb_backend[\"id\"],\n    name=\"frontend01\",\n    inbound_port=443,\n    certificate_ids=[cert01[\"id\"]])\nmain_pipeline = scaleway.edgeservices.Pipeline(\"main\", name=\"my-pipeline\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main_pipeline.id,\n    lb_backend_configs=[{\n        \"lb_config\": {\n            \"id\": main.id,\n            \"frontend_id\": id,\n            \"is_ssl\": True,\n            \"zone\": \"fr-par-1\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Loadbalancers.LoadBalancer(\"main\", new()\n    {\n        IpIds = new[]\n        {\n            mainScalewayLbIp.Id,\n        },\n        Zone = \"fr-par-1\",\n        Type = \"LB-S\",\n    });\n\n    var mainFrontend = new Scaleway.Loadbalancers.Frontend(\"main\", new()\n    {\n        LbId = main.Id,\n        BackendId = mainScalewayLbBackend.Id,\n        Name = \"frontend01\",\n        InboundPort = 443,\n        CertificateIds = new[]\n        {\n            cert01.Id,\n        },\n    });\n\n    var mainPipeline = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = mainPipeline.Id,\n        LbBackendConfigs = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.BackendStageLbBackendConfigArgs\n            {\n                LbConfig = new Scaleway.Edgeservices.Inputs.BackendStageLbBackendConfigLbConfigArgs\n                {\n                    Id = main.Id,\n                    FrontendId = id,\n                    IsSsl = true,\n                    Zone = \"fr-par-1\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := loadbalancers.NewLoadBalancer(ctx, \"main\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tmainScalewayLbIp.Id,\n\t\t\t},\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewFrontend(ctx, \"main\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        main.ID(),\n\t\t\tBackendId:   pulumi.Any(mainScalewayLbBackend.Id),\n\t\t\tName:        pulumi.String(\"frontend01\"),\n\t\t\tInboundPort: pulumi.Int(443),\n\t\t\tCertificateIds: pulumi.StringArray{\n\t\t\t\tcert01.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPipeline, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: mainPipeline.ID(),\n\t\t\tLbBackendConfigs: edgeservices.BackendStageLbBackendConfigArray{\n\t\t\t\t\u0026edgeservices.BackendStageLbBackendConfigArgs{\n\t\t\t\t\tLbConfig: \u0026edgeservices.BackendStageLbBackendConfigLbConfigArgs{\n\t\t\t\t\t\tId:         main.ID(),\n\t\t\t\t\t\tFrontendId: pulumi.Any(id),\n\t\t\t\t\t\tIsSsl:      pulumi.Bool(true),\n\t\t\t\t\t\tZone:       pulumi.String(\"fr-par-1\"),\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.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageLbBackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageLbBackendConfigLbConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new LoadBalancer(\"main\", LoadBalancerArgs.builder()\n            .ipIds(mainScalewayLbIp.id())\n            .zone(\"fr-par-1\")\n            .type(\"LB-S\")\n            .build());\n\n        var mainFrontend = new Frontend(\"mainFrontend\", FrontendArgs.builder()\n            .lbId(main.id())\n            .backendId(mainScalewayLbBackend.id())\n            .name(\"frontend01\")\n            .inboundPort(443)\n            .certificateIds(cert01.id())\n            .build());\n\n        var mainPipeline = new Pipeline(\"mainPipeline\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(mainPipeline.id())\n            .lbBackendConfigs(BackendStageLbBackendConfigArgs.builder()\n                .lbConfig(BackendStageLbBackendConfigLbConfigArgs.builder()\n                    .id(main.id())\n                    .frontendId(id)\n                    .isSsl(true)\n                    .zone(\"fr-par-1\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipIds:\n        - ${mainScalewayLbIp.id}\n      zone: fr-par-1\n      type: LB-S\n  mainFrontend:\n    type: scaleway:loadbalancers:Frontend\n    name: main\n    properties:\n      lbId: ${main.id}\n      backendId: ${mainScalewayLbBackend.id}\n      name: frontend01\n      inboundPort: '443'\n      certificateIds:\n        - ${cert01.id}\n  mainPipeline:\n    type: scaleway:edgeservices:Pipeline\n    name: main\n    properties:\n      name: my-pipeline\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${mainPipeline.id}\n      lbBackendConfigs:\n        - lbConfig:\n            id: ${main.id}\n            frontendId: ${id}\n            isSsl: true\n            zone: fr-par-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/backendStage:BackendStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the backend stage.\n"
                },
                "lbBackendConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/BackendStageLbBackendConfig:BackendStageLbBackendConfig"
                    },
                    "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n"
                },
                "s3BackendConfig": {
                    "$ref": "#/types/scaleway:edgeservices/BackendStageS3BackendConfig:BackendStageS3BackendConfig",
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the backend stage.\n"
                }
            },
            "required": [
                "createdAt",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "lbBackendConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/BackendStageLbBackendConfig:BackendStageLbBackendConfig"
                    },
                    "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "s3BackendConfig": {
                    "$ref": "#/types/scaleway:edgeservices/BackendStageS3BackendConfig:BackendStageS3BackendConfig",
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BackendStage resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the backend stage.\n"
                    },
                    "lbBackendConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:edgeservices/BackendStageLbBackendConfig:BackendStageLbBackendConfig"
                        },
                        "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "s3BackendConfig": {
                        "$ref": "#/types/scaleway:edgeservices/BackendStageS3BackendConfig:BackendStageS3BackendConfig",
                        "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the backend stage.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesBackendStage:EdgeServicesBackendStage"
                }
            ]
        },
        "scaleway:edgeservices/cacheStage:CacheStage": {
            "description": "Creates and manages Scaleway Edge Services Cache Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    backendStageId: mainScalewayEdgeServicesBackendStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    backend_stage_id=main_scaleway_edge_services_backend_stage[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        BackendStageId = mainScalewayEdgeServicesBackendStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:     pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tBackendStageId: pulumi.Any(mainScalewayEdgeServicesBackendStage.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.pulumi.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new CacheStage(\"main\", CacheStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .backendStageId(mainScalewayEdgeServicesBackendStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:CacheStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      backendStageId: ${mainScalewayEdgeServicesBackendStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Purge request\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    backendStageId: mainScalewayEdgeServicesBackendStage.id,\n    purge: [{\n        pipelineId: mainScalewayEdgeServicesPipeline.id,\n        all: true,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    backend_stage_id=main_scaleway_edge_services_backend_stage[\"id\"],\n    purge=[{\n        \"pipelineId\": main_scaleway_edge_services_pipeline[\"id\"],\n        \"all\": True,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        BackendStageId = mainScalewayEdgeServicesBackendStage.Id,\n        Purge = new[]\n        {\n            \n            {\n                { \"pipelineId\", mainScalewayEdgeServicesPipeline.Id },\n                { \"all\", true },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:     pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tBackendStageId: pulumi.Any(mainScalewayEdgeServicesBackendStage.Id),\n\t\t\tPurge: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"pipelineId\": mainScalewayEdgeServicesPipeline.Id,\n\t\t\t\t\t\"all\":        true,\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.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new CacheStage(\"main\", CacheStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .backendStageId(mainScalewayEdgeServicesBackendStage.id())\n            .purge(Arrays.asList(Map.ofEntries(\n                Map.entry(\"pipelineId\", mainScalewayEdgeServicesPipeline.id()),\n                Map.entry(\"all\", true)\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:CacheStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      backendStageId: ${mainScalewayEdgeServicesBackendStage.id}\n      purge:\n        - pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n          all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCache stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/cacheStage:CacheStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the cache stage.\n"
                },
                "fallbackTtl": {
                    "type": "integer",
                    "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                },
                "includeCookies": {
                    "type": "boolean",
                    "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n"
                },
                "purgeRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/CacheStagePurgeRequest:CacheStagePurgeRequest"
                    },
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "refreshCache": {
                    "type": "string",
                    "description": "Trigger a refresh of the cache by changing this field's value.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the cache stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "required": [
                "backendStageId",
                "createdAt",
                "pipelineId",
                "projectId",
                "routeStageId",
                "updatedAt",
                "wafStageId"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "fallbackTtl": {
                    "type": "integer",
                    "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                },
                "includeCookies": {
                    "type": "boolean",
                    "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "purgeRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/CacheStagePurgeRequest:CacheStagePurgeRequest"
                    },
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "refreshCache": {
                    "type": "string",
                    "description": "Trigger a refresh of the cache by changing this field's value.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CacheStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the cache stage.\n"
                    },
                    "fallbackTtl": {
                        "type": "integer",
                        "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                    },
                    "includeCookies": {
                        "type": "boolean",
                        "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "purgeRequests": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:edgeservices/CacheStagePurgeRequest:CacheStagePurgeRequest"
                        },
                        "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                    },
                    "refreshCache": {
                        "type": "string",
                        "description": "Trigger a refresh of the cache by changing this field's value.\n"
                    },
                    "routeStageId": {
                        "type": "string",
                        "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the cache stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesCacheStage:EdgeServicesCacheStage"
                }
            ]
        },
        "scaleway:edgeservices/dnsStage:DnsStage": {
            "description": "Creates and manages Scaleway Edge Services DNS Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    fqdns: [\"subdomain.example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    fqdns=[\"subdomain.example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.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.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new DnsStage(\"main\", DnsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:DnsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      fqdns:\n        - subdomain.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/dnsStage:DnsStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the DNS stage.\n"
                },
                "defaultFqdn": {
                    "type": "string",
                    "description": "The Default Fully Qualified Domain Name attached to the stage.\n"
                },
                "fqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n"
                },
                "tlsStageId": {
                    "type": "string",
                    "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the stage.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the DNS stage.\n"
                }
            },
            "required": [
                "backendStageId",
                "cacheStageId",
                "createdAt",
                "defaultFqdn",
                "fqdns",
                "pipelineId",
                "projectId",
                "tlsStageId",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "fqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tlsStageId": {
                    "type": "string",
                    "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DnsStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "cacheStageId": {
                        "type": "string",
                        "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the DNS stage.\n"
                    },
                    "defaultFqdn": {
                        "type": "string",
                        "description": "The Default Fully Qualified Domain Name attached to the stage.\n"
                    },
                    "fqdns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tlsStageId": {
                        "type": "string",
                        "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the stage.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the DNS stage.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesDnsStage:EdgeServicesDnsStage"
                }
            ]
        },
        "scaleway:edgeservices/headStage:HeadStage": {
            "description": "Sets the Scaleway Edge Services head stage of your pipeline.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-edge_services-pipeline\",\n    description: \"pipeline description\",\n});\nconst mainDnsStage = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: main.id,\n    tlsStageId: mainScalewayEdgeServicesTlsStage.id,\n    fqdns: [\"subdomain.example.com\"],\n});\nconst mainHeadStage = new scaleway.edgeservices.HeadStage(\"main\", {\n    pipelineId: main.id,\n    headStageId: mainDnsStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-edge_services-pipeline\",\n    description=\"pipeline description\")\nmain_dns_stage = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main.id,\n    tls_stage_id=main_scaleway_edge_services_tls_stage[\"id\"],\n    fqdns=[\"subdomain.example.com\"])\nmain_head_stage = scaleway.edgeservices.HeadStage(\"main\",\n    pipeline_id=main.id,\n    head_stage_id=main_dns_stage.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-edge_services-pipeline\",\n        Description = \"pipeline description\",\n    });\n\n    var mainDnsStage = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        TlsStageId = mainScalewayEdgeServicesTlsStage.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n    var mainHeadStage = new Scaleway.Edgeservices.HeadStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        HeadStageId = mainDnsStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-edge_services-pipeline\"),\n\t\t\tDescription: pulumi.String(\"pipeline description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDnsStage, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tTlsStageId: pulumi.Any(mainScalewayEdgeServicesTlsStage.Id),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewHeadStage(ctx, \"main\", \u0026edgeservices.HeadStageArgs{\n\t\t\tPipelineId:  main.ID(),\n\t\t\tHeadStageId: mainDnsStage.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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport com.pulumi.scaleway.edgeservices.HeadStage;\nimport com.pulumi.scaleway.edgeservices.HeadStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-edge_services-pipeline\")\n            .description(\"pipeline description\")\n            .build());\n\n        var mainDnsStage = new DnsStage(\"mainDnsStage\", DnsStageArgs.builder()\n            .pipelineId(main.id())\n            .tlsStageId(mainScalewayEdgeServicesTlsStage.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n        var mainHeadStage = new HeadStage(\"mainHeadStage\", HeadStageArgs.builder()\n            .pipelineId(main.id())\n            .headStageId(mainDnsStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-edge_services-pipeline\n      description: pipeline description\n  mainDnsStage:\n    type: scaleway:edgeservices:DnsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      tlsStageId: ${mainScalewayEdgeServicesTlsStage.id}\n      fqdns:\n        - subdomain.example.com\n  mainHeadStage:\n    type: scaleway:edgeservices:HeadStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      headStageId: ${mainDnsStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHead stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/headStage:HeadStage main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "headStageId": {
                    "type": "string",
                    "description": "The ID of head stage of the pipeline.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                }
            },
            "required": [
                "headStageId",
                "pipelineId"
            ],
            "inputProperties": {
                "headStageId": {
                    "type": "string",
                    "description": "The ID of head stage of the pipeline.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering HeadStage resources.\n",
                "properties": {
                    "headStageId": {
                        "type": "string",
                        "description": "The ID of head stage of the pipeline.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesHeadStage:EdgeServicesHeadStage"
                }
            ]
        },
        "scaleway:edgeservices/pipeline:Pipeline": {
            "description": "Creates and manages Scaleway Edge Services Pipelines.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"pipeline-name\",\n    description: \"pipeline description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"pipeline-name\",\n    description=\"pipeline description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"pipeline-name\",\n        Description = \"pipeline description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"pipeline-name\"),\n\t\t\tDescription: pulumi.String(\"pipeline 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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"pipeline-name\")\n            .description(\"pipeline description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: pipeline-name\n      description: pipeline description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete pipeline\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"pipeline-name\",\n    description: \"pipeline description\",\n});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: \"my-bucket-name\",\n        bucketRegion: \"fr-par\",\n    },\n});\nconst mainWafStage = new scaleway.edgeservices.WafStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: mainBackendStage.id,\n    mode: \"enable\",\n    paranoiaLevel: 3,\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    wafStageId: mainWafStage.id,\n    rules: [{\n        backendStageId: mainBackendStage.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \".*\",\n            },\n        },\n    }],\n});\nconst mainCacheStage = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: main.id,\n    routeStageId: mainRouteStage.id,\n});\nconst mainTlsStage = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: main.id,\n    cacheStageId: mainCacheStage.id,\n    managedCertificate: true,\n});\nconst mainDnsStage = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: main.id,\n    tlsStageId: mainTlsStage.id,\n    fqdns: [\"subdomain.example.com\"],\n});\nconst mainHeadStage = new scaleway.edgeservices.HeadStage(\"main\", {\n    pipelineId: main.id,\n    headStageId: mainDnsStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"pipeline-name\",\n    description=\"pipeline description\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": \"my-bucket-name\",\n        \"bucket_region\": \"fr-par\",\n    })\nmain_waf_stage = scaleway.edgeservices.WafStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=main_backend_stage.id,\n    mode=\"enable\",\n    paranoia_level=3)\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    waf_stage_id=main_waf_stage.id,\n    rules=[{\n        \"backend_stage_id\": main_backend_stage.id,\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \".*\",\n            },\n        },\n    }])\nmain_cache_stage = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main.id,\n    route_stage_id=main_route_stage.id)\nmain_tls_stage = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main.id,\n    cache_stage_id=main_cache_stage.id,\n    managed_certificate=True)\nmain_dns_stage = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main.id,\n    tls_stage_id=main_tls_stage.id,\n    fqdns=[\"subdomain.example.com\"])\nmain_head_stage = scaleway.edgeservices.HeadStage(\"main\",\n    pipeline_id=main.id,\n    head_stage_id=main_dns_stage.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"pipeline-name\",\n        Description = \"pipeline description\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = \"my-bucket-name\",\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var mainWafStage = new Scaleway.Edgeservices.WafStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = mainBackendStage.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 3,\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        WafStageId = mainWafStage.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = mainBackendStage.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \".*\",\n                    },\n                },\n            },\n        },\n    });\n\n    var mainCacheStage = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        RouteStageId = mainRouteStage.Id,\n    });\n\n    var mainTlsStage = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        CacheStageId = mainCacheStage.Id,\n        ManagedCertificate = true,\n    });\n\n    var mainDnsStage = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        TlsStageId = mainTlsStage.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n    var mainHeadStage = new Scaleway.Edgeservices.HeadStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        HeadStageId = mainDnsStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"pipeline-name\"),\n\t\t\tDescription: pulumi.String(\"pipeline description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainBackendStage, err := edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   pulumi.String(\"my-bucket-name\"),\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainWafStage, err := edgeservices.NewWafStage(ctx, \"main\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: mainBackendStage.ID(),\n\t\t\tMode:           pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel:  pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainRouteStage, err := edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tWafStageId: mainWafStage.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: mainBackendStage.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\".*\"),\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\tmainCacheStage, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:   main.ID(),\n\t\t\tRouteStageId: mainRouteStage.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainTlsStage, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId:         main.ID(),\n\t\t\tCacheStageId:       mainCacheStage.ID(),\n\t\t\tManagedCertificate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDnsStage, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tTlsStageId: mainTlsStage.ID(),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewHeadStage(ctx, \"main\", \u0026edgeservices.HeadStageArgs{\n\t\t\tPipelineId:  main.ID(),\n\t\t\tHeadStageId: mainDnsStage.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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport com.pulumi.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport com.pulumi.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport com.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport com.pulumi.scaleway.edgeservices.HeadStage;\nimport com.pulumi.scaleway.edgeservices.HeadStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"pipeline-name\")\n            .description(\"pipeline description\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(\"my-bucket-name\")\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var mainWafStage = new WafStage(\"mainWafStage\", WafStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(mainBackendStage.id())\n            .mode(\"enable\")\n            .paranoiaLevel(3)\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .wafStageId(mainWafStage.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(mainBackendStage.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\".*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n        var mainCacheStage = new CacheStage(\"mainCacheStage\", CacheStageArgs.builder()\n            .pipelineId(main.id())\n            .routeStageId(mainRouteStage.id())\n            .build());\n\n        var mainTlsStage = new TlsStage(\"mainTlsStage\", TlsStageArgs.builder()\n            .pipelineId(main.id())\n            .cacheStageId(mainCacheStage.id())\n            .managedCertificate(true)\n            .build());\n\n        var mainDnsStage = new DnsStage(\"mainDnsStage\", DnsStageArgs.builder()\n            .pipelineId(main.id())\n            .tlsStageId(mainTlsStage.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n        var mainHeadStage = new HeadStage(\"mainHeadStage\", HeadStageArgs.builder()\n            .pipelineId(main.id())\n            .headStageId(mainDnsStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: pipeline-name\n      description: pipeline description\n  mainDnsStage:\n    type: scaleway:edgeservices:DnsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      tlsStageId: ${mainTlsStage.id}\n      fqdns:\n        - subdomain.example.com\n  mainTlsStage:\n    type: scaleway:edgeservices:TlsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      cacheStageId: ${mainCacheStage.id}\n      managedCertificate: true\n  mainCacheStage:\n    type: scaleway:edgeservices:CacheStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      routeStageId: ${mainRouteStage.id}\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      wafStageId: ${mainWafStage.id}\n      rules:\n        - backendStageId: ${mainBackendStage.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n            pathFilter:\n              pathFilterType: regex\n              value: .*\n  mainWafStage:\n    type: scaleway:edgeservices:WafStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${mainBackendStage.id}\n      mode: enable\n      paranoiaLevel: 3\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: my-bucket-name\n        bucketRegion: fr-par\n  mainHeadStage:\n    type: scaleway:edgeservices:HeadStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      headStageId: ${mainDnsStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPipelines can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/pipeline:Pipeline basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the pipeline.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the pipeline.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of user pipeline.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the pipeline.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "projectId",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the pipeline.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Pipeline resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the pipeline.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the pipeline.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of user pipeline.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the pipeline.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesPipeline:EdgeServicesPipeline"
                }
            ]
        },
        "scaleway:edgeservices/plan:Plan": {
            "description": "Creates and manages Scaleway Edge Services plans.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Plan(\"main\", {name: \"starter\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Plan(\"main\", name=\"starter\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Plan(\"main\", new()\n    {\n        Name = \"starter\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewPlan(ctx, \"main\", \u0026edgeservices.PlanArgs{\n\t\t\tName: pulumi.String(\"starter\"),\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.scaleway.edgeservices.Plan;\nimport com.pulumi.scaleway.edgeservices.PlanArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Plan(\"main\", PlanArgs.builder()\n            .name(\"starter\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Plan\n    properties:\n      name: starter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlans can be imported using `{project_id}/{plan_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/plan:Plan main 11111111-1111-1111-1111-111111111111/starter\n```\n\n",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the plan.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n"
                }
            },
            "required": [
                "name",
                "projectId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the plan.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Plan resources.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the plan.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesPlan:EdgeServicesPlan"
                }
            ]
        },
        "scaleway:edgeservices/routeStage:RouteStage": {
            "description": "Creates and manages Scaleway Edge Services Route Stages.\n\n## Example Usage\n\n### Default to WAF with backend rules\n\nRoutes all unmatched traffic through a WAF stage, while requests matching specific patterns are sent directly to a backend stage.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    wafStageId: waf.id,\n    rules: [{\n        backendStageId: backend.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \".*\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    waf_stage_id=waf[\"id\"],\n    rules=[{\n        \"backend_stage_id\": backend[\"id\"],\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \".*\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        WafStageId = waf.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = backend.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \".*\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tWafStageId: pulumi.Any(waf.Id),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: pulumi.Any(backend.Id),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\".*\"),\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.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new RouteStage(\"main\", RouteStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .wafStageId(waf.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(backend.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\".*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:RouteStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      wafStageId: ${waf.id}\n      rules:\n        - backendStageId: ${backend.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n            pathFilter:\n              pathFilterType: regex\n              value: .*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Host-based routing\n\nRoutes requests to different backends based on the hostname, allowing a single pipeline to serve multiple domains.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-pipeline\",\n    description: \"Multi-host pipeline with host-based routing\",\n});\nconst api = new scaleway.object.Bucket(\"api\", {name: \"my-api-bucket\"});\nconst static = new scaleway.object.Bucket(\"static\", {name: \"my-static-site\"});\nconst apiBackendStage = new scaleway.edgeservices.BackendStage(\"api\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: api.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst staticBackendStage = new scaleway.edgeservices.BackendStage(\"static\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: static.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: staticBackendStage.id,\n    rules: [{\n        backendStageId: apiBackendStage.id,\n        ruleHttpMatch: {\n            hostFilter: {\n                hostFilterType: \"regex\",\n                value: \"api\\\\.example\\\\.com\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-pipeline\",\n    description=\"Multi-host pipeline with host-based routing\")\napi = scaleway.object.Bucket(\"api\", name=\"my-api-bucket\")\nstatic = scaleway.object.Bucket(\"static\", name=\"my-static-site\")\napi_backend_stage = scaleway.edgeservices.BackendStage(\"api\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": api.name,\n        \"bucket_region\": \"fr-par\",\n    })\nstatic_backend_stage = scaleway.edgeservices.BackendStage(\"static\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": static.name,\n        \"bucket_region\": \"fr-par\",\n    })\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=static_backend_stage.id,\n    rules=[{\n        \"backend_stage_id\": api_backend_stage.id,\n        \"rule_http_match\": {\n            \"host_filter\": {\n                \"host_filter_type\": \"regex\",\n                \"value\": \"api\\\\.example\\\\.com\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n        Description = \"Multi-host pipeline with host-based routing\",\n    });\n\n    var api = new Scaleway.Object.Bucket(\"api\", new()\n    {\n        Name = \"my-api-bucket\",\n    });\n\n    var @static = new Scaleway.Object.Bucket(\"static\", new()\n    {\n        Name = \"my-static-site\",\n    });\n\n    var apiBackendStage = new Scaleway.Edgeservices.BackendStage(\"api\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = api.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var staticBackendStage = new Scaleway.Edgeservices.BackendStage(\"static\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = @static.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = staticBackendStage.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = apiBackendStage.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    HostFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchHostFilterArgs\n                    {\n                        HostFilterType = \"regex\",\n                        Value = \"api\\\\.example\\\\.com\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-pipeline\"),\n\t\t\tDescription: pulumi.String(\"Multi-host pipeline with host-based routing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapi, err := object.NewBucket(ctx, \"api\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-api-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := object.NewBucket(ctx, \"static\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-static-site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapiBackendStage, err := edgeservices.NewBackendStage(ctx, \"api\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   api.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBackendStage, err := edgeservices.NewBackendStage(ctx, \"static\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   static.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: staticBackendStage.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: apiBackendStage.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tHostFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchHostFilterArgs{\n\t\t\t\t\t\t\tHostFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\"api\\\\.example\\\\.com\"),\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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchHostFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .description(\"Multi-host pipeline with host-based routing\")\n            .build());\n\n        var api = new Bucket(\"api\", BucketArgs.builder()\n            .name(\"my-api-bucket\")\n            .build());\n\n        var static_ = new Bucket(\"static\", BucketArgs.builder()\n            .name(\"my-static-site\")\n            .build());\n\n        var apiBackendStage = new BackendStage(\"apiBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(api.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var staticBackendStage = new BackendStage(\"staticBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(static_.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(staticBackendStage.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(apiBackendStage.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .hostFilter(RouteStageRuleRuleHttpMatchHostFilterArgs.builder()\n                        .hostFilterType(\"regex\")\n                        .value(\"api\\\\.example\\\\.com\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-pipeline\n      description: Multi-host pipeline with host-based routing\n  api:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-api-bucket\n  static:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-static-site\n  apiBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: api\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${api.name}\n        bucketRegion: fr-par\n  staticBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: static\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${static.name}\n        bucketRegion: fr-par\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${staticBackendStage.id}\n      rules:\n        - backendStageId: ${apiBackendStage.id}\n          ruleHttpMatch:\n            hostFilter:\n              hostFilterType: regex\n              value: api\\.example\\.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Default to backend with selective WAF protection\n\nServes static content directly from a backend by default, while routing API traffic through a WAF stage for protection against common web attacks.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-pipeline\",\n    description: \"Static site with WAF-protected API\",\n});\nconst mainBucket = new scaleway.object.Bucket(\"main\", {name: \"my-static-site\"});\nconst static = new scaleway.edgeservices.BackendStage(\"static\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: mainBucket.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst api = new scaleway.edgeservices.WafStage(\"api\", {\n    pipelineId: main.id,\n    backendStageId: static.id,\n    mode: \"enable\",\n    paranoiaLevel: 2,\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: static.id,\n    rules: [{\n        wafStageId: api.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n                \"put\",\n                \"patch\",\n                \"delete\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \"/api/.*\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-pipeline\",\n    description=\"Static site with WAF-protected API\")\nmain_bucket = scaleway.object.Bucket(\"main\", name=\"my-static-site\")\nstatic = scaleway.edgeservices.BackendStage(\"static\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": main_bucket.name,\n        \"bucket_region\": \"fr-par\",\n    })\napi = scaleway.edgeservices.WafStage(\"api\",\n    pipeline_id=main.id,\n    backend_stage_id=static.id,\n    mode=\"enable\",\n    paranoia_level=2)\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=static.id,\n    rules=[{\n        \"waf_stage_id\": api.id,\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n                \"put\",\n                \"patch\",\n                \"delete\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \"/api/.*\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n        Description = \"Static site with WAF-protected API\",\n    });\n\n    var mainBucket = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"my-static-site\",\n    });\n\n    var @static = new Scaleway.Edgeservices.BackendStage(\"static\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = mainBucket.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var api = new Scaleway.Edgeservices.WafStage(\"api\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = @static.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 2,\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = @static.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                WafStageId = api.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                        \"put\",\n                        \"patch\",\n                        \"delete\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \"/api/.*\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-pipeline\"),\n\t\t\tDescription: pulumi.String(\"Static site with WAF-protected API\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainBucket, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-static-site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := edgeservices.NewBackendStage(ctx, \"static\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   mainBucket.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapi, err := edgeservices.NewWafStage(ctx, \"api\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: static.ID(),\n\t\t\tMode:           pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel:  pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: static.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tWafStageId: api.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t\tpulumi.String(\"put\"),\n\t\t\t\t\t\t\tpulumi.String(\"patch\"),\n\t\t\t\t\t\t\tpulumi.String(\"delete\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\"/api/.*\"),\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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .description(\"Static site with WAF-protected API\")\n            .build());\n\n        var mainBucket = new Bucket(\"mainBucket\", BucketArgs.builder()\n            .name(\"my-static-site\")\n            .build());\n\n        var static_ = new BackendStage(\"static\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(mainBucket.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var api = new WafStage(\"api\", WafStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(static_.id())\n            .mode(\"enable\")\n            .paranoiaLevel(2)\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(static_.id())\n            .rules(RouteStageRuleArgs.builder()\n                .wafStageId(api.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\",\n                        \"put\",\n                        \"patch\",\n                        \"delete\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\"/api/.*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-pipeline\n      description: Static site with WAF-protected API\n  mainBucket:\n    type: scaleway:object:Bucket\n    name: main\n    properties:\n      name: my-static-site\n  static:\n    type: scaleway:edgeservices:BackendStage\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${mainBucket.name}\n        bucketRegion: fr-par\n  api:\n    type: scaleway:edgeservices:WafStage\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${static.id}\n      mode: enable\n      paranoiaLevel: 2\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${static.id}\n      rules:\n        - wafStageId: ${api.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n              - put\n              - patch\n              - delete\n            pathFilter:\n              pathFilterType: regex\n              value: /api/.*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoute stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/routeStage:RouteStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the route stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/RouteStageRule:RouteStageRule"
                    },
                    "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the route stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "createdAt",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/RouteStageRule:RouteStageRule"
                    },
                    "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RouteStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the route stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:edgeservices/RouteStageRule:RouteStageRule"
                        },
                        "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the route stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesRouteStage:EdgeServicesRouteStage"
                }
            ]
        },
        "scaleway:edgeservices/tlsStage:TlsStage": {
            "description": "Creates and manages Scaleway Edge Services TLS Stages.\n\n## Example Usage\n\n### Managed\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    managedCertificate: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    managed_certificate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        ManagedCertificate = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId:         pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tManagedCertificate: 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.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new TlsStage(\"main\", TlsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .managedCertificate(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:TlsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      managedCertificate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a certificate stored in Scaleway Secret Manager\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    secrets: [{\n        secretId: \"11111111-1111-1111-1111-111111111111\",\n        region: \"fr-par\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    secrets=[{\n        \"secret_id\": \"11111111-1111-1111-1111-111111111111\",\n        \"region\": \"fr-par\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Secrets = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.TlsStageSecretArgs\n            {\n                SecretId = \"11111111-1111-1111-1111-111111111111\",\n                Region = \"fr-par\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tSecrets: edgeservices.TlsStageSecretArray{\n\t\t\t\t\u0026edgeservices.TlsStageSecretArgs{\n\t\t\t\t\tSecretId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\t\t\tRegion:   pulumi.String(\"fr-par\"),\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.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.TlsStageSecretArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new TlsStage(\"main\", TlsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .secrets(TlsStageSecretArgs.builder()\n                .secretId(\"11111111-1111-1111-1111-111111111111\")\n                .region(\"fr-par\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:TlsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      secrets:\n        - secretId: 11111111-1111-1111-1111-111111111111\n          region: fr-par\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTLS stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/tlsStage:TlsStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "certificateExpiresAt": {
                    "type": "string",
                    "description": "The expiration date of the certificate.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the TLS stage.\n"
                },
                "managedCertificate": {
                    "type": "boolean",
                    "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/TlsStageSecret:TlsStageSecret"
                    },
                    "description": "The TLS secrets.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the TLS stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "required": [
                "backendStageId",
                "cacheStageId",
                "certificateExpiresAt",
                "createdAt",
                "managedCertificate",
                "pipelineId",
                "projectId",
                "routeStageId",
                "secrets",
                "updatedAt",
                "wafStageId"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "managedCertificate": {
                    "type": "boolean",
                    "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:edgeservices/TlsStageSecret:TlsStageSecret"
                    },
                    "description": "The TLS secrets.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TlsStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "cacheStageId": {
                        "type": "string",
                        "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "certificateExpiresAt": {
                        "type": "string",
                        "description": "The expiration date of the certificate.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the TLS stage.\n"
                    },
                    "managedCertificate": {
                        "type": "boolean",
                        "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "routeStageId": {
                        "type": "string",
                        "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "secrets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:edgeservices/TlsStageSecret:TlsStageSecret"
                        },
                        "description": "The TLS secrets.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the TLS stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesTlsStage:EdgeServicesTlsStage"
                }
            ]
        },
        "scaleway:edgeservices/wafStage:WafStage": {
            "description": "Creates and manages Scaleway Edge Services WAF Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.WafStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    mode: \"enable\",\n    paranoiaLevel: 3,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.WafStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    mode=\"enable\",\n    paranoia_level=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.WafStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewWafStage(ctx, \"main\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:    pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tMode:          pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel: pulumi.Int(3),\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.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new WafStage(\"main\", WafStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .mode(\"enable\")\n            .paranoiaLevel(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:WafStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      mode: enable\n      paranoiaLevel: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWAF stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:edgeservices/wafStage:WafStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the WAF stage.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                },
                "paranoiaLevel": {
                    "type": "integer",
                    "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the WAF stage.\n"
                }
            },
            "required": [
                "backendStageId",
                "createdAt",
                "mode",
                "paranoiaLevel",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                },
                "paranoiaLevel": {
                    "type": "integer",
                    "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "paranoiaLevel",
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering WafStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the WAF stage.\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                    },
                    "paranoiaLevel": {
                        "type": "integer",
                        "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the WAF stage.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/edgeServicesWafStage:EdgeServicesWafStage"
                }
            ]
        },
        "scaleway:elasticmetal/ip:Ip": {
            "description": "Creates and manages Scaleway flexible IPs.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal-flexible-ip).\n\n\u003e **Note:**\nFlexible IPs are exclusively available for Elastic Metal (bare metal) servers. They are not compatible with other Scaleway products.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {reverse: \"my-reverse.com\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", reverse=\"my-reverse.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        Reverse = \"my-reverse.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tReverse: pulumi.String(\"my-reverse.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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .reverse(\"my-reverse.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      reverse: my-reverse.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {zone: \"fr-par-2\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", zone=\"fr-par-2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        Zone = \"fr-par-2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tZone: pulumi.String(\"fr-par-2\"),\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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .zone(\"fr-par-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      zone: fr-par-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {isIpv6: true});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", is_ipv6=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        IsIpv6 = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tIsIpv6: 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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .isIpv6(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      isIpv6: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With baremetal server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.account.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\",\n});\nconst byId = scaleway.elasticmetal.getOs({\n    zone: \"fr-par-2\",\n    name: \"Ubuntu\",\n    version: \"20.04 LTS (Focal Fossa)\",\n});\nconst myOffer = scaleway.elasticmetal.getOffer({\n    zone: \"fr-par-2\",\n    name: \"EM-A210R-HDD\",\n});\nconst base = new scaleway.elasticmetal.Server(\"base\", {\n    zone: \"fr-par-2\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    os: byId.then(byId =\u003e byId.osId),\n    sshKeyIds: main.id,\n});\nconst mainIp = new scaleway.elasticmetal.Ip(\"main\", {\n    serverId: base.id,\n    zone: \"fr-par-2\",\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.account.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\")\nby_id = scaleway.elasticmetal.get_os(zone=\"fr-par-2\",\n    name=\"Ubuntu\",\n    version=\"20.04 LTS (Focal Fossa)\")\nmy_offer = scaleway.elasticmetal.get_offer(zone=\"fr-par-2\",\n    name=\"EM-A210R-HDD\")\nbase = scaleway.elasticmetal.Server(\"base\",\n    zone=\"fr-par-2\",\n    offer=my_offer.offer_id,\n    os=by_id.os_id,\n    ssh_key_ids=main.id)\nmain_ip = scaleway.elasticmetal.Ip(\"main\",\n    server_id=base.id,\n    zone=\"fr-par-2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Account.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\",\n    });\n\n    var byId = Scaleway.Elasticmetal.GetOs.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"Ubuntu\",\n        Version = \"20.04 LTS (Focal Fossa)\",\n    });\n\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"EM-A210R-HDD\",\n    });\n\n    var @base = new Scaleway.Elasticmetal.Server(\"base\", new()\n    {\n        Zone = \"fr-par-2\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Os = byId.Apply(getOsResult =\u003e getOsResult.OsId),\n        SshKeyIds = main.Id,\n    });\n\n    var mainIp = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        ServerId = @base.Id,\n        Zone = \"fr-par-2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := account.NewSshKey(ctx, \"main\", \u0026account.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbyId, err := elasticmetal.GetOs(ctx, \u0026elasticmetal.GetOsArgs{\n\t\t\tZone:    pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName:    pulumi.StringRef(\"Ubuntu\"),\n\t\t\tVersion: pulumi.StringRef(\"20.04 LTS (Focal Fossa)\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"EM-A210R-HDD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := elasticmetal.NewServer(ctx, \"base\", \u0026elasticmetal.ServerArgs{\n\t\t\tZone:      pulumi.String(\"fr-par-2\"),\n\t\t\tOffer:     pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tOs:        pulumi.String(pulumi.String(byId.OsId)),\n\t\t\tSshKeyIds: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t\tZone:     pulumi.String(\"fr-par-2\"),\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.scaleway.account.SshKey;\nimport com.pulumi.scaleway.account.SshKeyArgs;\nimport com.pulumi.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOsArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\")\n            .build());\n\n        final var byId = ElasticmetalFunctions.getOs(GetOsArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"Ubuntu\")\n            .version(\"20.04 LTS (Focal Fossa)\")\n            .build());\n\n        final var myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"EM-A210R-HDD\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .zone(\"fr-par-2\")\n            .offer(myOffer.offerId())\n            .os(byId.osId())\n            .sshKeyIds(main.id())\n            .build());\n\n        var mainIp = new Ip(\"mainIp\", IpArgs.builder()\n            .serverId(base.id())\n            .zone(\"fr-par-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:account:SshKey\n    properties:\n      name: main\n      publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\n  base:\n    type: scaleway:elasticmetal:Server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${byId.osId}\n      sshKeyIds: ${main.id}\n  mainIp:\n    type: scaleway:elasticmetal:Ip\n    name: main\n    properties:\n      serverId: ${base.id}\n      zone: fr-par-2\nvariables:\n  byId:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 20.04 LTS (Focal Fossa)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-A210R-HDD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexible IPs can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:elasticmetal/ip:Ip main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Flexible IP (Format ISO 8601).\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the flexible IP.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address of the Flexible IP.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the flexible IP has an IPv6 address.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization of the Flexible IP.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this flexible IP.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the associated server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the flexible IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the flexible IP.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Flexible IP (Format ISO 8601).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n"
                }
            },
            "required": [
                "createdAt",
                "ipAddress",
                "organizationId",
                "projectId",
                "reverse",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "A description of the flexible IP.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the flexible IP has an IPv6 address.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this flexible IP.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the associated server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the flexible IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Ip resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Flexible IP (Format ISO 8601).\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description of the flexible IP.\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP address of the Flexible IP.\n"
                    },
                    "isIpv6": {
                        "type": "boolean",
                        "description": "Defines whether the flexible IP has an IPv6 address.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization of the Flexible IP.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse domain associated with this flexible IP.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the associated server.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the flexible IP.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the flexible IP.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Flexible IP (Format ISO 8601).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/flexibleIp:FlexibleIp"
                }
            ]
        },
        "scaleway:elasticmetal/ipMacAddress:IpMacAddress": {
            "description": "Creates and manages Scaleway Flexible IP Mac Addresses.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal-flexible-ip/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {});\nconst mainIpMacAddress = new scaleway.elasticmetal.IpMacAddress(\"main\", {\n    flexibleIpId: main.id,\n    type: \"kvm\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\")\nmain_ip_mac_address = scaleway.elasticmetal.IpMacAddress(\"main\",\n    flexible_ip_id=main.id,\n    type=\"kvm\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\");\n\n    var mainIpMacAddress = new Scaleway.Elasticmetal.IpMacAddress(\"main\", new()\n    {\n        FlexibleIpId = main.Id,\n        Type = \"kvm\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := elasticmetal.NewIp(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIpMacAddress(ctx, \"main\", \u0026elasticmetal.IpMacAddressArgs{\n\t\t\tFlexibleIpId: main.ID(),\n\t\t\tType:         pulumi.String(\"kvm\"),\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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddress;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddressArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\");\n\n        var mainIpMacAddress = new IpMacAddress(\"mainIpMacAddress\", IpMacAddressArgs.builder()\n            .flexibleIpId(main.id())\n            .type(\"kvm\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n  mainIpMacAddress:\n    type: scaleway:elasticmetal:IpMacAddress\n    name: main\n    properties:\n      flexibleIpId: ${main.id}\n      type: kvm\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Duplicate on many other flexible IPs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst myOffer = scaleway.elasticmetal.getOffer({\n    name: \"EM-B112X-SSD\",\n});\nconst base = new scaleway.elasticmetal.Server(\"base\", {\n    name: \"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    installConfigAfterward: true,\n});\nconst ip01 = new scaleway.elasticmetal.Ip(\"ip01\", {serverId: base.id});\nconst ip02 = new scaleway.elasticmetal.Ip(\"ip02\", {serverId: base.id});\nconst ip03 = new scaleway.elasticmetal.Ip(\"ip03\", {serverId: base.id});\nconst main = new scaleway.elasticmetal.IpMacAddress(\"main\", {\n    flexibleIpId: ip01.id,\n    type: \"kvm\",\n    flexibleIpIdsToDuplicates: [\n        ip02.id,\n        ip03.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmy_offer = scaleway.elasticmetal.get_offer(name=\"EM-B112X-SSD\")\nbase = scaleway.elasticmetal.Server(\"base\",\n    name=\"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n    offer=my_offer.offer_id,\n    install_config_afterward=True)\nip01 = scaleway.elasticmetal.Ip(\"ip01\", server_id=base.id)\nip02 = scaleway.elasticmetal.Ip(\"ip02\", server_id=base.id)\nip03 = scaleway.elasticmetal.Ip(\"ip03\", server_id=base.id)\nmain = scaleway.elasticmetal.IpMacAddress(\"main\",\n    flexible_ip_id=ip01.id,\n    type=\"kvm\",\n    flexible_ip_ids_to_duplicates=[\n        ip02.id,\n        ip03.id,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Name = \"EM-B112X-SSD\",\n    });\n\n    var @base = new Scaleway.Elasticmetal.Server(\"base\", new()\n    {\n        Name = \"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        InstallConfigAfterward = true,\n    });\n\n    var ip01 = new Scaleway.Elasticmetal.Ip(\"ip01\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var ip02 = new Scaleway.Elasticmetal.Ip(\"ip02\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var ip03 = new Scaleway.Elasticmetal.Ip(\"ip03\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var main = new Scaleway.Elasticmetal.IpMacAddress(\"main\", new()\n    {\n        FlexibleIpId = ip01.Id,\n        Type = \"kvm\",\n        FlexibleIpIdsToDuplicates = new[]\n        {\n            ip02.Id,\n            ip03.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tName: pulumi.StringRef(\"EM-B112X-SSD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := elasticmetal.NewServer(ctx, \"base\", \u0026elasticmetal.ServerArgs{\n\t\t\tName:                   pulumi.String(\"TestAccScalewayBaremetalServer_WithoutInstallConfig\"),\n\t\t\tOffer:                  pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tInstallConfigAfterward: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := elasticmetal.NewIp(ctx, \"ip01\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip02, err := elasticmetal.NewIp(ctx, \"ip02\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip03, err := elasticmetal.NewIp(ctx, \"ip03\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIpMacAddress(ctx, \"main\", \u0026elasticmetal.IpMacAddressArgs{\n\t\t\tFlexibleIpId: ip01.ID(),\n\t\t\tType:         pulumi.String(\"kvm\"),\n\t\t\tFlexibleIpIdsToDuplicates: pulumi.StringArray{\n\t\t\t\tip02.ID(),\n\t\t\t\tip03.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.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddress;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddressArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .name(\"EM-B112X-SSD\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .name(\"TestAccScalewayBaremetalServer_WithoutInstallConfig\")\n            .offer(myOffer.offerId())\n            .installConfigAfterward(true)\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var ip02 = new Ip(\"ip02\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var ip03 = new Ip(\"ip03\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var main = new IpMacAddress(\"main\", IpMacAddressArgs.builder()\n            .flexibleIpId(ip01.id())\n            .type(\"kvm\")\n            .flexibleIpIdsToDuplicates(            \n                ip02.id(),\n                ip03.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  base:\n    type: scaleway:elasticmetal:Server\n    properties:\n      name: TestAccScalewayBaremetalServer_WithoutInstallConfig\n      offer: ${myOffer.offerId}\n      installConfigAfterward: true\n  ip01:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  ip02:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  ip03:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  main:\n    type: scaleway:elasticmetal:IpMacAddress\n    properties:\n      flexibleIpId: ${ip01.id}\n      type: kvm\n      flexibleIpIdsToDuplicates:\n        - ${ip02.id}\n        - ${ip03.id}\nvariables:\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        name: EM-B112X-SSD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexible IP Mac Addresses can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:elasticmetal/ipMacAddress:IpMacAddress main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The Virtual MAC address.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date at which the Virtual Mac Address was created (RFC 3339 format).\n"
                },
                "flexibleIpId": {
                    "type": "string",
                    "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                },
                "flexibleIpIdsToDuplicates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The Virtual MAC status.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the virtual MAC.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date at which the Virtual Mac Address was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the Virtual Mac Address.\n"
                }
            },
            "required": [
                "address",
                "createdAt",
                "flexibleIpId",
                "status",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "flexibleIpId": {
                    "type": "string",
                    "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                },
                "flexibleIpIdsToDuplicates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the virtual MAC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the Virtual Mac Address.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "flexibleIpId",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpMacAddress resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The Virtual MAC address.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date at which the Virtual Mac Address was created (RFC 3339 format).\n"
                    },
                    "flexibleIpId": {
                        "type": "string",
                        "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                    },
                    "flexibleIpIdsToDuplicates": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The Virtual MAC status.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the virtual MAC.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date at which the Virtual Mac Address was last updated (RFC 3339 format).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone of the Virtual Mac Address.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/flexibleIpMacAddress:FlexibleIpMacAddress"
                }
            ]
        },
        "scaleway:elasticmetal/server:Server": {
            "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.id}\n      sshKeyIds:\n        - ${mySshKey.id}\nvariables:\n  ### Basic\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I220E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\n//## With cloud-init\nconst mySshKey = scaleway.iam.getSshKey({\n    name: \"main\",\n});\nconst myOs = scaleway.elasticmetal.getOs({\n    zone: \"fr-par-1\",\n    name: \"Ubuntu\",\n    version: \"22.04 LTS (Jammy Jellyfish)\",\n});\nconst myOffer = scaleway.elasticmetal.getOffer({\n    zone: \"fr-par-2\",\n    name: \"EM-I220E-NVME\",\n});\nconst myServerCi = new scaleway.elasticmetal.Server(\"my_server_ci\", {\n    zone: \"fr-par-2\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    os: myOs.then(myOs =\u003e myOs.osId),\n    sshKeyIds: [mySshKey.then(mySshKey =\u003e mySshKey.id)],\n    cloudInit: std.file({\n        input: \"userdata.yaml\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\n### With cloud-init\nmy_ssh_key = scaleway.iam.get_ssh_key(name=\"main\")\nmy_os = scaleway.elasticmetal.get_os(zone=\"fr-par-1\",\n    name=\"Ubuntu\",\n    version=\"22.04 LTS (Jammy Jellyfish)\")\nmy_offer = scaleway.elasticmetal.get_offer(zone=\"fr-par-2\",\n    name=\"EM-I220E-NVME\")\nmy_server_ci = scaleway.elasticmetal.Server(\"my_server_ci\",\n    zone=\"fr-par-2\",\n    offer=my_offer.offer_id,\n    os=my_os.os_id,\n    ssh_key_ids=[my_ssh_key.id],\n    cloud_init=std.file(input=\"userdata.yaml\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## With cloud-init\n    var mySshKey = Scaleway.Iam.GetSshKey.Invoke(new()\n    {\n        Name = \"main\",\n    });\n\n    var myOs = Scaleway.Elasticmetal.GetOs.Invoke(new()\n    {\n        Zone = \"fr-par-1\",\n        Name = \"Ubuntu\",\n        Version = \"22.04 LTS (Jammy Jellyfish)\",\n    });\n\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"EM-I220E-NVME\",\n    });\n\n    var myServerCi = new Scaleway.Elasticmetal.Server(\"my_server_ci\", new()\n    {\n        Zone = \"fr-par-2\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Os = myOs.Apply(getOsResult =\u003e getOsResult.OsId),\n        SshKeyIds = new[]\n        {\n            mySshKey.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n        CloudInit = Std.File.Invoke(new()\n        {\n            Input = \"userdata.yaml\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## With cloud-init\n\t\tmySshKey, err := iam.LookupSshKey(ctx, \u0026iam.LookupSshKeyArgs{\n\t\t\tName: pulumi.StringRef(\"main\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOs, err := elasticmetal.GetOs(ctx, \u0026elasticmetal.GetOsArgs{\n\t\t\tZone:    pulumi.StringRef(\"fr-par-1\"),\n\t\t\tName:    pulumi.StringRef(\"Ubuntu\"),\n\t\t\tVersion: pulumi.StringRef(\"22.04 LTS (Jammy Jellyfish)\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"EM-I220E-NVME\"),\n\t\t}, nil)\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\": \"userdata.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewServer(ctx, \"my_server_ci\", \u0026elasticmetal.ServerArgs{\n\t\t\tZone:  pulumi.String(\"fr-par-2\"),\n\t\t\tOffer: pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tOs:    pulumi.String(pulumi.String(myOs.OsId)),\n\t\t\tSshKeyIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(pulumi.String(mySshKey.Id)),\n\t\t\t},\n\t\t\tCloudInit: invokeFile.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.scaleway.iam.IamFunctions;\nimport com.pulumi.scaleway.iam.inputs.GetSshKeyArgs;\nimport com.pulumi.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOsArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## With cloud-init\n        final var mySshKey = IamFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"main\")\n            .build());\n\n        final var myOs = ElasticmetalFunctions.getOs(GetOsArgs.builder()\n            .zone(\"fr-par-1\")\n            .name(\"Ubuntu\")\n            .version(\"22.04 LTS (Jammy Jellyfish)\")\n            .build());\n\n        final var myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"EM-I220E-NVME\")\n            .build());\n\n        var myServerCi = new Server(\"myServerCi\", ServerArgs.builder()\n            .zone(\"fr-par-2\")\n            .offer(myOffer.offerId())\n            .os(myOs.osId())\n            .sshKeyIds(mySshKey.id())\n            .cloudInit(StdFunctions.file(Map.of(\"input\", \"userdata.yaml\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myServerCi:\n    type: scaleway:elasticmetal:Server\n    name: my_server_ci\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      sshKeyIds:\n        - ${mySshKey.id}\n      cloudInit:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: userdata.yaml\n          return: result\nvariables:\n  ### With cloud-init\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-1\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I220E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      partitioning: |\n        {\n          \\\"disks\\\": [\n            {\n              \\\"device\\\": \\\"/dev/nvme0n1\\\",\n              \\\"partitions\\\": [\n                {\n                  \\\"label\\\": \\\"uefi\\\",\n                  \\\"number\\\": 1,\n                  \\\"size\\\": 536870912\n                },\n                {\n                  \\\"label\\\": \\\"swap\\\",\n                  \\\"number\\\": 2,\n                  \\\"size\\\": 4294967296\n                },\n                {\n                  \\\"label\\\": \\\"boot\\\",\n                  \\\"number\\\": 3,\n                  \\\"size\\\": 1073741824\n                },\n                {\n                  \\\"label\\\": \\\"root\\\",\n                  \\\"number\\\": 4,\n                  \\\"size\\\": 1017827045376\n                }\n              ]\n            },\n            {\n              \\\"device\\\": \\\"/dev/nvme1n1\\\",\n              \\\"partitions\\\": [\n                {\n                  \\\"label\\\": \\\"swap\\\",\n                  \\\"number\\\": 1,\n                  \\\"size\\\": 4294967296\n                },\n                {\n                  \\\"label\\\": \\\"boot\\\",\n                  \\\"number\\\": 2,\n                  \\\"size\\\": 1073741824\n                },\n                {\n                  \\\"label\\\": \\\"root\\\",\n                  \\\"number\\\": 3,\n                  \\\"size\\\": 1017827045376\n                }\n              ]\n            }\n          ],\n          \\\"filesystems\\\": [\n            {\n              \\\"device\\\": \\\"/dev/nvme0n1p1\\\",\n              \\\"format\\\": \\\"fat32\\\",\n              \\\"mountpoint\\\": \\\"/boot/efi\\\"\n            },\n            {\n              \\\"device\\\": \\\"/dev/md0\\\",\n              \\\"format\\\": \\\"ext4\\\",\n              \\\"mountpoint\\\": \\\"/boot\\\"\n            },\n            {\n              \\\"device\\\": \\\"/dev/md1\\\",\n              \\\"format\\\": \\\"ext4\\\",\n              \\\"mountpoint\\\": \\\"/\\\"\n            }\n          ],\n          \\\"raids\\\": [\n            {\n              \\\"devices\\\": [\\\"/dev/nvme0n1p3\\\", \\\"/dev/nvme1n1p2\\\"],\n              \\\"level\\\": \\\"raid_level_1\\\",\n              \\\"name\\\": \\\"/dev/md0\\\"\n            },\n            {\n              \\\"devices\\\": [\\\"/dev/nvme0n1p4\\\", \\\"/dev/nvme1n1p3\\\"],\n              \\\"level\\\": \\\"raid_level_1\\\",\n              \\\"name\\\": \\\"/dev/md1\\\"\n            }\n          ],\n          \\\"zfs\\\": {\n            \\\"pools\\\": []\n          }\n        }\n      sshKeyIds:\n        - ${mySshKey.id}\nvariables:\n  ### With custom partitioning\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I215E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  ### With IPAM IP IDs\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc_baremetal\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_baremetal\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.64.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      sshKeyIds:\n        - ${mySshKey.id}\n      options:\n        - id: ${privateNetwork.optionId}\n      privateNetworks:\n        - id: ${pn01.id}\n          ipamIpIds:\n            - ${ip01.id}\nvariables:\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-1\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-1\n        name: EM-A115X-SSD\n  privateNetwork:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOption\n      arguments:\n        zone: fr-par-1\n        name: Private Network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBaremetal servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:elasticmetal/server:Server web fr-par-2/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the server.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "The domain of the server.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of the server.\n"
                },
                "installConfigAfterward": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerIp:ServerIp"
                    },
                    "description": "(List of) The IPs of the server.\n"
                },
                "ipv4s": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerIpv4:ServerIpv4"
                    },
                    "description": "(List of) The IPv4 addresses of the server.\n"
                },
                "ipv6s": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerIpv6:ServerIpv6"
                    },
                    "description": "(List of) The IPv6 addresses of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "offer": {
                    "type": "string",
                    "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the offer.\n"
                },
                "offerName": {
                    "type": "string",
                    "description": "The name of the offer.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerOption:ServerOption"
                    },
                    "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "os": {
                    "type": "string",
                    "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                },
                "osName": {
                    "type": "string",
                    "description": "The name of the os.\n"
                },
                "partitioning": {
                    "type": "string",
                    "description": "The partitioning schema in JSON format\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "reinstallOnConfigChanges": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                },
                "servicePassword": {
                    "type": "string",
                    "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                    "secret": true
                },
                "servicePasswordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                    "secret": true
                },
                "servicePasswordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                },
                "serviceUser": {
                    "type": "string",
                    "description": "User used for the service to install.\n"
                },
                "sshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of SSH keys allowed to connect to the server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "user": {
                    "type": "string",
                    "description": "User used for the installation.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n"
                }
            },
            "required": [
                "cloudInit",
                "domain",
                "ips",
                "ipv4s",
                "ipv6s",
                "name",
                "offer",
                "offerId",
                "offerName",
                "organizationId",
                "osName",
                "privateIps",
                "projectId",
                "serviceUser",
                "tags",
                "user"
            ],
            "inputProperties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the server.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of the server.\n"
                },
                "installConfigAfterward": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "offer": {
                    "type": "string",
                    "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerOption:ServerOption"
                    },
                    "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                },
                "os": {
                    "type": "string",
                    "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                },
                "partitioning": {
                    "type": "string",
                    "description": "The partitioning schema in JSON format\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:elasticmetal/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "reinstallOnConfigChanges": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                },
                "servicePassword": {
                    "type": "string",
                    "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                    "secret": true
                },
                "servicePasswordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                    "secret": true
                },
                "servicePasswordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                },
                "serviceUser": {
                    "type": "string",
                    "description": "User used for the service to install.\n"
                },
                "sshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of SSH keys allowed to connect to the server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "user": {
                    "type": "string",
                    "description": "User used for the installation.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "offer"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Server resources.\n",
                "properties": {
                    "cloudInit": {
                        "type": "string",
                        "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description for the server.\n"
                    },
                    "domain": {
                        "type": "string",
                        "description": "The domain of the server.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname of the server.\n"
                    },
                    "installConfigAfterward": {
                        "type": "boolean",
                        "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerIp:ServerIp"
                        },
                        "description": "(List of) The IPs of the server.\n"
                    },
                    "ipv4s": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerIpv4:ServerIpv4"
                        },
                        "description": "(List of) The IPv4 addresses of the server.\n"
                    },
                    "ipv6s": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerIpv6:ServerIpv6"
                        },
                        "description": "(List of) The IPv6 addresses of the server.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "offer": {
                        "type": "string",
                        "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                    },
                    "offerId": {
                        "type": "string",
                        "description": "The ID of the offer.\n"
                    },
                    "offerName": {
                        "type": "string",
                        "description": "The name of the offer.\n"
                    },
                    "options": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerOption:ServerOption"
                        },
                        "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "os": {
                        "type": "string",
                        "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                    },
                    "osName": {
                        "type": "string",
                        "description": "The name of the os.\n"
                    },
                    "partitioning": {
                        "type": "string",
                        "description": "The partitioning schema in JSON format\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerPrivateIp:ServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:elasticmetal/ServerPrivateNetwork:ServerPrivateNetwork"
                        },
                        "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Set to true to activate server protection option.\n"
                    },
                    "reinstallOnConfigChanges": {
                        "type": "boolean",
                        "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                    },
                    "servicePassword": {
                        "type": "string",
                        "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                        "secret": true
                    },
                    "servicePasswordWo": {
                        "type": "string",
                        "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                        "secret": true
                    },
                    "servicePasswordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                    },
                    "serviceUser": {
                        "type": "string",
                        "description": "User used for the service to install.\n"
                    },
                    "sshKeyIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of SSH keys allowed to connect to the server.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the server.\n"
                    },
                    "user": {
                        "type": "string",
                        "description": "User used for the installation.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/baremetalServer:BaremetalServer"
                }
            ]
        },
        "scaleway:functions/cron:Cron": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Cron`\" pulumi-lang-dotnet=\"`scaleway.functions.Cron`\" pulumi-lang-go=\"`functions.Cron`\" pulumi-lang-python=\"`functions.Cron`\" pulumi-lang-yaml=\"`scaleway.functions.Cron`\" pulumi-lang-java=\"`scaleway.functions.Cron`\"\u003e`scaleway.functions.Cron`\u003c/span\u003e resource allows you to create and manage CRON triggers for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions CRON triggers [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-trigger-to-a-function/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\nThe following command allows you to add a CRON trigger to a Serverless Function.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {name: \"test-cron\"});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    name: \"test-cron\",\n    namespaceId: main.id,\n    runtime: \"node14\",\n    privacy: \"private\",\n    handler: \"handler.handle\",\n});\nconst mainCron = new scaleway.functions.Cron(\"main\", {\n    name: \"test-cron\",\n    functionId: mainFunction.id,\n    schedule: \"0 0 * * *\",\n    args: JSON.stringify({\n        test: \"scw\",\n    }),\n});\nconst func = new scaleway.functions.Cron(\"func\", {\n    functionId: mainFunction.id,\n    schedule: \"0 1 * * *\",\n    args: JSON.stringify({\n        my_var: \"terraform\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\", name=\"test-cron\")\nmain_function = scaleway.functions.Function(\"main\",\n    name=\"test-cron\",\n    namespace_id=main.id,\n    runtime=\"node14\",\n    privacy=\"private\",\n    handler=\"handler.handle\")\nmain_cron = scaleway.functions.Cron(\"main\",\n    name=\"test-cron\",\n    function_id=main_function.id,\n    schedule=\"0 0 * * *\",\n    args=json.dumps({\n        \"test\": \"scw\",\n    }))\nfunc = scaleway.functions.Cron(\"func\",\n    function_id=main_function.id,\n    schedule=\"0 1 * * *\",\n    args=json.dumps({\n        \"my_var\": \"terraform\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"test-cron\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        Name = \"test-cron\",\n        NamespaceId = main.Id,\n        Runtime = \"node14\",\n        Privacy = \"private\",\n        Handler = \"handler.handle\",\n    });\n\n    var mainCron = new Scaleway.Functions.Cron(\"main\", new()\n    {\n        Name = \"test-cron\",\n        FunctionId = mainFunction.Id,\n        Schedule = \"0 0 * * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"test\"] = \"scw\",\n        }),\n    });\n\n    var func = new Scaleway.Functions.Cron(\"func\", new()\n    {\n        FunctionId = mainFunction.Id,\n        Schedule = \"0 1 * * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"my_var\"] = \"terraform\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-cron\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tName:        pulumi.String(\"test-cron\"),\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"node14\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tHandler:     pulumi.String(\"handler.handle\"),\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\"test\": \"scw\",\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 = functions.NewCron(ctx, \"main\", \u0026functions.CronArgs{\n\t\t\tName:       pulumi.String(\"test-cron\"),\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tSchedule:   pulumi.String(\"0 0 * * *\"),\n\t\t\tArgs:       pulumi.String(pulumi.String(json0)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"my_var\": \"terraform\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = functions.NewCron(ctx, \"func\", \u0026functions.CronArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tSchedule:   pulumi.String(\"0 1 * * *\"),\n\t\t\tArgs:       pulumi.String(pulumi.String(json1)),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Cron;\nimport com.pulumi.scaleway.functions.CronArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-cron\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .name(\"test-cron\")\n            .namespaceId(main.id())\n            .runtime(\"node14\")\n            .privacy(\"private\")\n            .handler(\"handler.handle\")\n            .build());\n\n        var mainCron = new Cron(\"mainCron\", CronArgs.builder()\n            .name(\"test-cron\")\n            .functionId(mainFunction.id())\n            .schedule(\"0 0 * * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"test\", \"scw\")\n                )))\n            .build());\n\n        var func = new Cron(\"func\", CronArgs.builder()\n            .functionId(mainFunction.id())\n            .schedule(\"0 1 * * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"my_var\", \"terraform\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: test-cron\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      name: test-cron\n      namespaceId: ${main.id}\n      runtime: node14\n      privacy: private\n      handler: handler.handle\n  mainCron:\n    type: scaleway:functions:Cron\n    name: main\n    properties:\n      name: test-cron\n      functionId: ${mainFunction.id}\n      schedule: 0 0 * * *\n      args:\n        fn::toJSON:\n          test: scw\n  func:\n    type: scaleway:functions:Cron\n    properties:\n      functionId: ${mainFunction.id}\n      schedule: 0 1 * * *\n      args:\n        fn::toJSON:\n          my_var: terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction Cron can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/cron:Cron main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the function was created.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                },
                "status": {
                    "type": "string",
                    "description": "The CRON status.\n"
                }
            },
            "required": [
                "args",
                "functionId",
                "name",
                "schedule",
                "status"
            ],
            "inputProperties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the function was created.\n",
                    "willReplaceOnChanges": true
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                }
            },
            "requiredInputs": [
                "args",
                "functionId",
                "schedule"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cron resources.\n",
                "properties": {
                    "args": {
                        "type": "string",
                        "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function to link to your CRON trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the function was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "schedule": {
                        "type": "string",
                        "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The CRON status.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/functionCron:FunctionCron"
                }
            ]
        },
        "scaleway:functions/domain:Domain": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Domain`\" pulumi-lang-dotnet=\"`scaleway.functions.Domain`\" pulumi-lang-go=\"`functions.Domain`\" pulumi-lang-python=\"`functions.Domain`\" pulumi-lang-yaml=\"`scaleway.functions.Domain`\" pulumi-lang-java=\"`scaleway.functions.Domain`\"\u003e`scaleway.functions.Domain`\u003c/span\u003e resource allows you to create and manage domain name bindings for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions domain [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-a-custom-domain-name-to-a-function/) and the [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-domains-list-all-domain-name-bindings) for more information.\n\n## Example Usage\n\nThis command allows to bind a custom domain name to a function.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainNamespace = new scaleway.functions.Namespace(\"main\", {});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: mainNamespace.id,\n    runtime: \"go118\",\n    privacy: \"private\",\n    handler: \"Handle\",\n    zipFile: \"testfixture/gofunction.zip\",\n    deploy: true,\n});\nconst main = new scaleway.functions.Domain(\"main\", {\n    functionId: mainFunction.id,\n    hostname: \"example.com\",\n}, {\n    dependsOn: [mainFunction],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_namespace = scaleway.functions.Namespace(\"main\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main_namespace.id,\n    runtime=\"go118\",\n    privacy=\"private\",\n    handler=\"Handle\",\n    zip_file=\"testfixture/gofunction.zip\",\n    deploy=True)\nmain = scaleway.functions.Domain(\"main\",\n    function_id=main_function.id,\n    hostname=\"example.com\",\n    opts = pulumi.ResourceOptions(depends_on=[main_function]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainNamespace = new Scaleway.Functions.Namespace(\"main\");\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = mainNamespace.Id,\n        Runtime = \"go118\",\n        Privacy = \"private\",\n        Handler = \"Handle\",\n        ZipFile = \"testfixture/gofunction.zip\",\n        Deploy = true,\n    });\n\n    var main = new Scaleway.Functions.Domain(\"main\", new()\n    {\n        FunctionId = mainFunction.Id,\n        Hostname = \"example.com\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainFunction,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainNamespace, err := functions.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: mainNamespace.ID(),\n\t\t\tRuntime:     pulumi.String(\"go118\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tZipFile:     pulumi.String(\"testfixture/gofunction.zip\"),\n\t\t\tDeploy:      pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewDomain(ctx, \"main\", \u0026functions.DomainArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tHostname:   pulumi.String(\"example.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainFunction,\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Domain;\nimport com.pulumi.scaleway.functions.DomainArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainNamespace = new Namespace(\"mainNamespace\");\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(mainNamespace.id())\n            .runtime(\"go118\")\n            .privacy(\"private\")\n            .handler(\"Handle\")\n            .zipFile(\"testfixture/gofunction.zip\")\n            .deploy(true)\n            .build());\n\n        var main = new Domain(\"main\", DomainArgs.builder()\n            .functionId(mainFunction.id())\n            .hostname(\"example.com\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(mainFunction)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Domain\n    properties:\n      functionId: ${mainFunction.id}\n      hostname: example.com\n    options:\n      dependsOn:\n        - ${mainFunction}\n  mainNamespace:\n    type: scaleway:functions:Namespace\n    name: main\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${mainNamespace.id}\n      runtime: go118\n      privacy: private\n      handler: Handle\n      zipFile: testfixture/gofunction.zip\n      deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction domain binding can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/domain:Domain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the domain was created.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL used to query the function.\n"
                }
            },
            "required": [
                "functionId",
                "hostname",
                "url"
            ],
            "inputProperties": {
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the domain was created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "functionId",
                "hostname"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Domain resources.\n",
                "properties": {
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function.\n",
                        "willReplaceOnChanges": true
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the domain was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL used to query the function.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/functionDomain:FunctionDomain"
                }
            ]
        },
        "scaleway:functions/function:Function": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Function`\" pulumi-lang-dotnet=\"`scaleway.functions.Function`\" pulumi-lang-go=\"`functions.Function`\" pulumi-lang-python=\"`functions.Function`\" pulumi-lang-yaml=\"`scaleway.functions.Function`\" pulumi-lang-java=\"`scaleway.functions.Function`\"\u003e`scaleway.functions.Function`\u003c/span\u003e resource allows you to create and manage [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Serverless Functions [product documentation](https://www.scaleway.com/en/docs/serverless/functions/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/) for more information.\n\nFor more information on the limitations of Serverless Functions, refer to the [dedicated documentation](https://www.scaleway.com/en/docs/compute/functions/reference-content/functions-limitations/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"go124\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      runtime: go124\n      handler: Handle\n      privacy: private\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With sources and deploy\n\nYou can easily create a zip file containing your function (ex: `zip function.zip -r go.mod go.sum handler.go`) to deploy it with Terraform seamlessly. Refer to our [dedicated documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/package-function-dependencies-in-zip/) for more information on how to package a function into a zip file.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    description: \"function with zip file\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n    timeout: 10,\n    zipFile: \"function.zip\",\n    zipHash: std.filesha256({\n        input: \"function.zip\",\n    }).result,\n    deploy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    description=\"function with zip file\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ],\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\",\n    timeout=10,\n    zip_file=\"function.zip\",\n    zip_hash=std.filesha256(input=\"function.zip\")[\"result\"],\n    deploy=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Description = \"function with zip file\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n        Timeout = 10,\n        ZipFile = \"function.zip\",\n        ZipHash = Std.Filesha256.Invoke(new()\n        {\n            Input = \"function.zip\",\n        }).Result,\n        Deploy = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilesha256, err := std.Filesha256(ctx, map[string]interface{}{\n\t\t\t\"input\": \"function.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tDescription: pulumi.String(\"function with zip file\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t\tRuntime: pulumi.String(\"go124\"),\n\t\t\tHandler: pulumi.String(\"Handle\"),\n\t\t\tPrivacy: pulumi.String(\"private\"),\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tZipFile: pulumi.String(\"function.zip\"),\n\t\t\tZipHash: invokeFilesha256.Result,\n\t\t\tDeploy:  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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .description(\"function with zip file\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .timeout(10)\n            .zipFile(\"function.zip\")\n            .zipHash(StdFunctions.filesha256(Map.of(\"input\", \"function.zip\")).result())\n            .deploy(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      description: function with zip file\n      tags:\n        - tag1\n        - tag2\n      runtime: go124\n      handler: Handle\n      privacy: private\n      timeout: 10\n      zipFile: function.zip\n      zipHash:\n        fn::invoke:\n          function: std:filesha256\n          arguments:\n            input: function.zip\n          return: result\n      deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing authentication of private functions with IAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\n// Project to be referenced in the IAM policy\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM resources\nconst funcAuth = new scaleway.iam.Application(\"func_auth\", {name: \"function-auth\"});\nconst accessPrivateFuncs = new scaleway.iam.Policy(\"access_private_funcs\", {\n    applicationId: funcAuth.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"FunctionsPrivateAccess\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: funcAuth.id});\n// Function resources\nconst _private = new scaleway.functions.Namespace(\"private\", {name: \"private-function-namespace\"});\nconst privateFunction = new scaleway.functions.Function(\"private\", {\n    namespaceId: _private.id,\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n    zipFile: \"function.zip\",\n    zipHash: std.filesha256({\n        input: \"function.zip\",\n    }).result,\n    deploy: true,\n});\nexport const secretKey = apiKey.secretKey;\nexport const functionEndpoint = privateFunction.domainName;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\n# Project to be referenced in the IAM policy\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM resources\nfunc_auth = scaleway.iam.Application(\"func_auth\", name=\"function-auth\")\naccess_private_funcs = scaleway.iam.Policy(\"access_private_funcs\",\n    application_id=func_auth.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"FunctionsPrivateAccess\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=func_auth.id)\n# Function resources\nprivate = scaleway.functions.Namespace(\"private\", name=\"private-function-namespace\")\nprivate_function = scaleway.functions.Function(\"private\",\n    namespace_id=private.id,\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\",\n    zip_file=\"function.zip\",\n    zip_hash=std.filesha256(input=\"function.zip\")[\"result\"],\n    deploy=True)\npulumi.export(\"secretKey\", api_key.secret_key)\npulumi.export(\"functionEndpoint\", private_function.domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project to be referenced in the IAM policy\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM resources\n    var funcAuth = new Scaleway.Iam.Application(\"func_auth\", new()\n    {\n        Name = \"function-auth\",\n    });\n\n    var accessPrivateFuncs = new Scaleway.Iam.Policy(\"access_private_funcs\", new()\n    {\n        ApplicationId = funcAuth.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"FunctionsPrivateAccess\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = funcAuth.Id,\n    });\n\n    // Function resources\n    var @private = new Scaleway.Functions.Namespace(\"private\", new()\n    {\n        Name = \"private-function-namespace\",\n    });\n\n    var privateFunction = new Scaleway.Functions.Function(\"private\", new()\n    {\n        NamespaceId = @private.Id,\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n        ZipFile = \"function.zip\",\n        ZipHash = Std.Filesha256.Invoke(new()\n        {\n            Input = \"function.zip\",\n        }).Result,\n        Deploy = true,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"secretKey\"] = apiKey.SecretKey,\n        [\"functionEndpoint\"] = privateFunction.DomainName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project to be referenced in the IAM policy\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM resources\n\t\tfuncAuth, err := iam.NewApplication(ctx, \"func_auth\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"function-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"access_private_funcs\", \u0026iam.PolicyArgs{\n\t\t\tApplicationId: funcAuth.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"FunctionsPrivateAccess\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: funcAuth.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Function resources\n\t\tprivate, err := functions.NewNamespace(ctx, \"private\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"private-function-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilesha256, err := std.Filesha256(ctx, map[string]interface{}{\n\t\t\t\"input\": \"function.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateFunction, err := functions.NewFunction(ctx, \"private\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: private.ID(),\n\t\t\tRuntime:     pulumi.String(\"go124\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tZipFile:     pulumi.String(\"function.zip\"),\n\t\t\tZipHash:     invokeFilesha256.Result,\n\t\t\tDeploy:      pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"secretKey\", apiKey.SecretKey)\n\t\tctx.Export(\"functionEndpoint\", privateFunction.DomainName)\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project to be referenced in the IAM policy\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM resources\n        var funcAuth = new Application(\"funcAuth\", ApplicationArgs.builder()\n            .name(\"function-auth\")\n            .build());\n\n        var accessPrivateFuncs = new Policy(\"accessPrivateFuncs\", PolicyArgs.builder()\n            .applicationId(funcAuth.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"FunctionsPrivateAccess\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(funcAuth.id())\n            .build());\n\n        // Function resources\n        var private_ = new Namespace(\"private\", NamespaceArgs.builder()\n            .name(\"private-function-namespace\")\n            .build());\n\n        var privateFunction = new Function(\"privateFunction\", FunctionArgs.builder()\n            .namespaceId(private_.id())\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .zipFile(\"function.zip\")\n            .zipHash(StdFunctions.filesha256(Map.of(\"input\", \"function.zip\")).result())\n            .deploy(true)\n            .build());\n\n        ctx.export(\"secretKey\", apiKey.secretKey());\n        ctx.export(\"functionEndpoint\", privateFunction.domainName());\n    }\n}\n```\n```yaml\nresources:\n  # IAM resources\n  funcAuth:\n    type: scaleway:iam:Application\n    name: func_auth\n    properties:\n      name: function-auth\n  accessPrivateFuncs:\n    type: scaleway:iam:Policy\n    name: access_private_funcs\n    properties:\n      applicationId: ${funcAuth.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - FunctionsPrivateAccess\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${funcAuth.id}\n  # Function resources\n  private:\n    type: scaleway:functions:Namespace\n    properties:\n      name: private-function-namespace\n  privateFunction:\n    type: scaleway:functions:Function\n    name: private\n    properties:\n      namespaceId: ${private.id}\n      runtime: go124\n      handler: Handle\n      privacy: private\n      zipFile: function.zip\n      zipHash:\n        fn::invoke:\n          function: std:filesha256\n          arguments:\n            input: function.zip\n          return: result\n      deploy: true\nvariables:\n  # Project to be referenced in the IAM policy\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  # Output the secret key and the function's endpoint for the curl command\n  secretKey: ${apiKey.secretKey}\n  functionEndpoint: ${privateFunction.domainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThen you can access your private function using the API key:\n\n```shell\n$ curl -H \"X-Auth-Token: $(terraform output -raw secret_key)\" \\\n  \"https://$(terraform output -raw function_endpoint)/\"\n```\n\nKeep in mind that you should revoke your legacy JWT tokens to ensure maximum security.\n\n## Import\n\nFunctions can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/function:Function main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cpuLimit": {
                    "type": "integer",
                    "description": "The CPU limit in mVCPU for your function.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the function.\n"
                },
                "domainName": {
                    "type": "string",
                    "description": "The native domain name of the function.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                },
                "handler": {
                    "type": "string",
                    "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the function name.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the function is associated with.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the function is connected to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n"
                },
                "runtime": {
                    "type": "string",
                    "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the function.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the function.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                },
                "zipFile": {
                    "type": "string",
                    "description": "Path to the zip file containing your function sources to upload.\n"
                },
                "zipHash": {
                    "type": "string",
                    "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                }
            },
            "required": [
                "cpuLimit",
                "domainName",
                "handler",
                "name",
                "namespaceId",
                "organizationId",
                "privacy",
                "projectId",
                "runtime",
                "sandbox",
                "timeout"
            ],
            "inputProperties": {
                "deploy": {
                    "type": "boolean",
                    "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the function.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                },
                "handler": {
                    "type": "string",
                    "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the function name.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n",
                    "willReplaceOnChanges": true
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the function is connected to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n",
                    "willReplaceOnChanges": true
                },
                "runtime": {
                    "type": "string",
                    "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the function.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the function.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                },
                "zipFile": {
                    "type": "string",
                    "description": "Path to the zip file containing your function sources to upload.\n"
                },
                "zipHash": {
                    "type": "string",
                    "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                }
            },
            "requiredInputs": [
                "handler",
                "namespaceId",
                "privacy",
                "runtime"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Function resources.\n",
                "properties": {
                    "cpuLimit": {
                        "type": "integer",
                        "description": "The CPU limit in mVCPU for your function.\n"
                    },
                    "deploy": {
                        "type": "boolean",
                        "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the function.\n"
                    },
                    "domainName": {
                        "type": "string",
                        "description": "The native domain name of the function.\n"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                    },
                    "handler": {
                        "type": "string",
                        "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                    },
                    "httpOption": {
                        "type": "string",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                    },
                    "maxScale": {
                        "type": "integer",
                        "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                    },
                    "memoryLimit": {
                        "type": "integer",
                        "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                    },
                    "minScale": {
                        "type": "integer",
                        "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the function name.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the function is associated with.\n"
                    },
                    "privacy": {
                        "type": "string",
                        "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the Private Network the function is connected to.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "runtime": {
                        "type": "string",
                        "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                    },
                    "sandbox": {
                        "type": "string",
                        "description": "Execution environment of the function.\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the function.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                    },
                    "zipFile": {
                        "type": "string",
                        "description": "Path to the zip file containing your function sources to upload.\n"
                    },
                    "zipHash": {
                        "type": "string",
                        "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/function:Function"
                }
            ]
        },
        "scaleway:functions/namespace:Namespace": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Namespace`\" pulumi-lang-dotnet=\"`scaleway.functions.Namespace`\" pulumi-lang-go=\"`functions.Namespace`\" pulumi-lang-python=\"`functions.Namespace`\" pulumi-lang-yaml=\"`scaleway.functions.Namespace`\" pulumi-lang-java=\"`scaleway.functions.Namespace`\"\u003e`scaleway.functions.Namespace`\u003c/span\u003e resource allows you to\nfor Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions namespace [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/create-manage-delete-functions-namespace/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-namespaces-list-all-your-namespaces) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n      tags:\n        - tag1\n        - tag2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunctions namespaces can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/namespace:Namespace main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID with which the namespace is associated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "registryEndpoint": {
                    "type": "string",
                    "description": "The registry endpoint of the namespace.\n"
                },
                "registryNamespaceId": {
                    "type": "string",
                    "description": "The registry namespace ID of the namespace.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "registryEndpoint",
                "registryNamespaceId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Namespace resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the namespace.\n"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The environment variables of the namespace.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID with which the namespace is associated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryEndpoint": {
                        "type": "string",
                        "description": "The registry endpoint of the namespace.\n"
                    },
                    "registryNamespaceId": {
                        "type": "string",
                        "description": "The registry namespace ID of the namespace.\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The secret environment variables of the namespace.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the namespace.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/functionNamespace:FunctionNamespace"
                }
            ]
        },
        "scaleway:functions/token:Token": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Token`\" pulumi-lang-dotnet=\"`scaleway.functions.Token`\" pulumi-lang-go=\"`functions.Token`\" pulumi-lang-python=\"`functions.Token`\" pulumi-lang-yaml=\"`scaleway.functions.Token`\" pulumi-lang-java=\"`scaleway.functions.Token`\"\u003e`scaleway.functions.Token`\u003c/span\u003e has been deprecated and will no longer be supported in v1 of the API.\nPlease use IAM authentication instead. You will find an implementation example in the IAM authentication section of the Function documentation.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Token`\" pulumi-lang-dotnet=\"`scaleway.functions.Token`\" pulumi-lang-go=\"`functions.Token`\" pulumi-lang-python=\"`functions.Token`\" pulumi-lang-yaml=\"`scaleway.functions.Token`\" pulumi-lang-java=\"`scaleway.functions.Token`\"\u003e`scaleway.functions.Token`\u003c/span\u003e resource allows you to create and manage authentication tokens for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions tokens [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/create-auth-token-from-console/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-tokens-list-all-tokens) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {name: \"test-function-token-ns\"});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    runtime: \"go118\",\n    handler: \"Handle\",\n    privacy: \"private\",\n});\n// Namespace Token\nconst namespace = new scaleway.functions.Token(\"namespace\", {\n    namespaceId: main.id,\n    expiresAt: \"2022-10-18T11:35:15+02:00\",\n});\n// Function Token\nconst _function = new scaleway.functions.Token(\"function\", {functionId: mainFunction.id});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\", name=\"test-function-token-ns\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    runtime=\"go118\",\n    handler=\"Handle\",\n    privacy=\"private\")\n# Namespace Token\nnamespace = scaleway.functions.Token(\"namespace\",\n    namespace_id=main.id,\n    expires_at=\"2022-10-18T11:35:15+02:00\")\n# Function Token\nfunction = scaleway.functions.Token(\"function\", function_id=main_function.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"test-function-token-ns\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Runtime = \"go118\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n    });\n\n    // Namespace Token\n    var @namespace = new Scaleway.Functions.Token(\"namespace\", new()\n    {\n        NamespaceId = main.Id,\n        ExpiresAt = \"2022-10-18T11:35:15+02:00\",\n    });\n\n    // Function Token\n    var function = new Scaleway.Functions.Token(\"function\", new()\n    {\n        FunctionId = mainFunction.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-function-token-ns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"go118\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Namespace Token\n\t\t_, err = functions.NewToken(ctx, \"namespace\", \u0026functions.TokenArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tExpiresAt:   pulumi.String(\"2022-10-18T11:35:15+02:00\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Function Token\n\t\t_, err = functions.NewToken(ctx, \"function\", \u0026functions.TokenArgs{\n\t\t\tFunctionId: mainFunction.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.pulumi.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Token;\nimport com.pulumi.scaleway.functions.TokenArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-function-token-ns\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .runtime(\"go118\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .build());\n\n        // Namespace Token\n        var namespace = new Token(\"namespace\", TokenArgs.builder()\n            .namespaceId(main.id())\n            .expiresAt(\"2022-10-18T11:35:15+02:00\")\n            .build());\n\n        // Function Token\n        var function = new Token(\"function\", TokenArgs.builder()\n            .functionId(mainFunction.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: test-function-token-ns\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      runtime: go118\n      handler: Handle\n      privacy: private\n  # Namespace Token\n  namespace:\n    type: scaleway:functions:Token\n    properties:\n      namespaceId: ${main.id}\n      expiresAt: 2022-10-18T11:35:15+02:00\n  # Function Token\n  function:\n    type: scaleway:functions:Token\n    properties:\n      functionId: ${mainFunction.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTokens can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/token:Token main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Functions namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The token.\n",
                    "secret": true
                }
            },
            "required": [
                "value"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n",
                    "willReplaceOnChanges": true
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Functions namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Token resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The expiration date of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The unique identifier of the Functions namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "value": {
                        "type": "string",
                        "description": "The token.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/functionToken:FunctionToken"
                }
            ]
        },
        "scaleway:functions/trigger:Trigger": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Trigger`\" pulumi-lang-dotnet=\"`scaleway.functions.Trigger`\" pulumi-lang-go=\"`functions.Trigger`\" pulumi-lang-python=\"`functions.Trigger`\" pulumi-lang-yaml=\"`scaleway.functions.Trigger`\" pulumi-lang-java=\"`scaleway.functions.Trigger`\"\u003e`scaleway.functions.Trigger`\u003c/span\u003e resource allows you to create and manage triggers for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions triggers [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-trigger-to-a-function/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\n### SQS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Trigger(\"main\", {\n    functionId: mainScalewayFunction.id,\n    name: \"my-trigger\",\n    sqs: {\n        projectId: mainScalewayMnqSqs.projectId,\n        queue: \"MyQueue\",\n        region: mainScalewayMnqSqs.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Trigger(\"main\",\n    function_id=main_scaleway_function[\"id\"],\n    name=\"my-trigger\",\n    sqs={\n        \"project_id\": main_scaleway_mnq_sqs[\"projectId\"],\n        \"queue\": \"MyQueue\",\n        \"region\": main_scaleway_mnq_sqs[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Trigger(\"main\", new()\n    {\n        FunctionId = mainScalewayFunction.Id,\n        Name = \"my-trigger\",\n        Sqs = new Scaleway.Functions.Inputs.TriggerSqsArgs\n        {\n            ProjectId = mainScalewayMnqSqs.ProjectId,\n            Queue = \"MyQueue\",\n            Region = mainScalewayMnqSqs.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewTrigger(ctx, \"main\", \u0026functions.TriggerArgs{\n\t\t\tFunctionId: pulumi.Any(mainScalewayFunction.Id),\n\t\t\tName:       pulumi.String(\"my-trigger\"),\n\t\t\tSqs: \u0026functions.TriggerSqsArgs{\n\t\t\t\tProjectId: pulumi.Any(mainScalewayMnqSqs.ProjectId),\n\t\t\t\tQueue:     pulumi.String(\"MyQueue\"),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqSqs.Region),\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.scaleway.functions.Trigger;\nimport com.pulumi.scaleway.functions.TriggerArgs;\nimport com.pulumi.scaleway.functions.inputs.TriggerSqsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .functionId(mainScalewayFunction.id())\n            .name(\"my-trigger\")\n            .sqs(TriggerSqsArgs.builder()\n                .projectId(mainScalewayMnqSqs.projectId())\n                .queue(\"MyQueue\")\n                .region(mainScalewayMnqSqs.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Trigger\n    properties:\n      functionId: ${mainScalewayFunction.id}\n      name: my-trigger\n      sqs:\n        projectId: ${mainScalewayMnqSqs.projectId}\n        queue: MyQueue\n        region: ${mainScalewayMnqSqs.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### NATS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Trigger(\"main\", {\n    functionId: mainScalewayFunction.id,\n    name: \"my-trigger\",\n    nats: {\n        accountId: mainScalewayMnqNatsAccount.id,\n        subject: \"MySubject\",\n        region: mainScalewayMnqNatsAccount.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Trigger(\"main\",\n    function_id=main_scaleway_function[\"id\"],\n    name=\"my-trigger\",\n    nats={\n        \"account_id\": main_scaleway_mnq_nats_account[\"id\"],\n        \"subject\": \"MySubject\",\n        \"region\": main_scaleway_mnq_nats_account[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Trigger(\"main\", new()\n    {\n        FunctionId = mainScalewayFunction.Id,\n        Name = \"my-trigger\",\n        Nats = new Scaleway.Functions.Inputs.TriggerNatsArgs\n        {\n            AccountId = mainScalewayMnqNatsAccount.Id,\n            Subject = \"MySubject\",\n            Region = mainScalewayMnqNatsAccount.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewTrigger(ctx, \"main\", \u0026functions.TriggerArgs{\n\t\t\tFunctionId: pulumi.Any(mainScalewayFunction.Id),\n\t\t\tName:       pulumi.String(\"my-trigger\"),\n\t\t\tNats: \u0026functions.TriggerNatsArgs{\n\t\t\t\tAccountId: pulumi.Any(mainScalewayMnqNatsAccount.Id),\n\t\t\t\tSubject:   pulumi.String(\"MySubject\"),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqNatsAccount.Region),\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.scaleway.functions.Trigger;\nimport com.pulumi.scaleway.functions.TriggerArgs;\nimport com.pulumi.scaleway.functions.inputs.TriggerNatsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .functionId(mainScalewayFunction.id())\n            .name(\"my-trigger\")\n            .nats(TriggerNatsArgs.builder()\n                .accountId(mainScalewayMnqNatsAccount.id())\n                .subject(\"MySubject\")\n                .region(mainScalewayMnqNatsAccount.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Trigger\n    properties:\n      functionId: ${mainScalewayFunction.id}\n      name: my-trigger\n      nats:\n        accountId: ${mainScalewayMnqNatsAccount.id}\n        subject: MySubject\n        region: ${mainScalewayMnqNatsAccount.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction Triggers can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:functions/trigger:Trigger main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to create a trigger for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:functions/TriggerNats:TriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "sqs": {
                    "$ref": "#/types/scaleway:functions/TriggerSqs:TriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                }
            },
            "required": [
                "functionId",
                "name"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to create a trigger for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:functions/TriggerNats:TriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "sqs": {
                    "$ref": "#/types/scaleway:functions/TriggerSqs:TriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "functionId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Trigger resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the trigger.\n"
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function to create a trigger for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                    },
                    "nats": {
                        "$ref": "#/types/scaleway:functions/TriggerNats:TriggerNats",
                        "description": "The configuration for the Scaleway NATS account used by the trigger\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sqs": {
                        "$ref": "#/types/scaleway:functions/TriggerSqs:TriggerSqs",
                        "description": "The configuration of the Scaleway SQS queue used by the trigger\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/functionTrigger:FunctionTrigger"
                }
            ]
        },
        "scaleway:hosting/hosting:Hosting": {
            "description": "Creates and manages Scaleway Web Hostings.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/webhosting/hosting-api/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst byName = scaleway.hosting.getOffer({\n    name: \"lite\",\n    controlPanel: \"Cpanel\",\n});\nconst main = new scaleway.hosting.Hosting(\"main\", {\n    offerId: byName.then(byName =\u003e byName.offerId),\n    email: \"your@email.com\",\n    domain: \"yourdomain.com\",\n    tags: [\n        \"webhosting\",\n        \"provider\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nby_name = scaleway.hosting.get_offer(name=\"lite\",\n    control_panel=\"Cpanel\")\nmain = scaleway.hosting.Hosting(\"main\",\n    offer_id=by_name.offer_id,\n    email=\"your@email.com\",\n    domain=\"yourdomain.com\",\n    tags=[\n        \"webhosting\",\n        \"provider\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byName = Scaleway.Hosting.GetOffer.Invoke(new()\n    {\n        Name = \"lite\",\n        ControlPanel = \"Cpanel\",\n    });\n\n    var main = new Scaleway.Hosting.Hosting(\"main\", new()\n    {\n        OfferId = byName.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Email = \"your@email.com\",\n        Domain = \"yourdomain.com\",\n        Tags = new[]\n        {\n            \"webhosting\",\n            \"provider\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/hosting\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbyName, err := hosting.GetOffer(ctx, \u0026hosting.GetOfferArgs{\n\t\t\tName:         pulumi.StringRef(\"lite\"),\n\t\t\tControlPanel: pulumi.StringRef(\"Cpanel\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hosting.NewHosting(ctx, \"main\", \u0026hosting.HostingArgs{\n\t\t\tOfferId: pulumi.String(pulumi.String(byName.OfferId)),\n\t\t\tEmail:   pulumi.String(\"your@email.com\"),\n\t\t\tDomain:  pulumi.String(\"yourdomain.com\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"webhosting\"),\n\t\t\t\tpulumi.String(\"provider\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.hosting.HostingFunctions;\nimport com.pulumi.scaleway.hosting.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.hosting.Hosting;\nimport com.pulumi.scaleway.hosting.HostingArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 byName = HostingFunctions.getOffer(GetOfferArgs.builder()\n            .name(\"lite\")\n            .controlPanel(\"Cpanel\")\n            .build());\n\n        var main = new Hosting(\"main\", HostingArgs.builder()\n            .offerId(byName.offerId())\n            .email(\"your@email.com\")\n            .domain(\"yourdomain.com\")\n            .tags(            \n                \"webhosting\",\n                \"provider\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:hosting:Hosting\n    properties:\n      offerId: ${byName.offerId}\n      email: your@email.com\n      domain: yourdomain.com\n      tags:\n        - webhosting\n        - provider\n        - terraform\nvariables:\n  byName:\n    fn::invoke:\n      function: scaleway:hosting:getOffer\n      arguments:\n        name: lite\n        controlPanel: Cpanel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHostings can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:hosting/hosting:Hosting hosting01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cpanelUrls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:hosting/HostingCpanelUrl:HostingCpanelUrl"
                    },
                    "description": "The URL to connect to cPanel Dashboard and to Webmail interface.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of hosting's creation (RFC 3339 format).\n"
                },
                "dnsStatus": {
                    "type": "string",
                    "description": "The DNS status of the hosting.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "The domain name of the hosting.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The contact email of the client for the hosting.\n"
                },
                "nameServers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:hosting/HostingNameServer:HostingNameServer"
                    },
                    "description": "List of nameservers associated with the webhosting."
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the selected offer for the hosting.\n"
                },
                "offerName": {
                    "type": "string",
                    "description": "The name of the active offer.\n"
                },
                "optionIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the selected options for the hosting.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:hosting/HostingOption:HostingOption"
                    },
                    "description": "The active options of the hosting.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "(Deprecated) The organization ID the hosting is associated with.\n",
                    "deprecationMessage": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003efield is deprecated and will be removed in the next major version."
                },
                "platformHostname": {
                    "type": "string",
                    "description": "The hostname of the host platform.\n"
                },
                "platformNumber": {
                    "type": "integer",
                    "description": "The number of the host platform.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n"
                },
                "records": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:hosting/HostingRecord:HostingRecord"
                    },
                    "description": "List of DNS records associated with the webhosting."
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Hosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the hosting.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of hosting's last update (RFC 3339 format).\n"
                },
                "username": {
                    "type": "string",
                    "description": "The main hosting cPanel username.\n"
                }
            },
            "required": [
                "cpanelUrls",
                "createdAt",
                "dnsStatus",
                "domain",
                "email",
                "nameServers",
                "offerId",
                "offerName",
                "options",
                "organizationId",
                "platformHostname",
                "platformNumber",
                "projectId",
                "records",
                "status",
                "tags",
                "updatedAt",
                "username"
            ],
            "inputProperties": {
                "domain": {
                    "type": "string",
                    "description": "The domain name of the hosting.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The contact email of the client for the hosting.\n"
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the selected offer for the hosting.\n"
                },
                "optionIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the selected options for the hosting.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Hosting.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the hosting.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "email",
                "offerId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Hosting resources.\n",
                "properties": {
                    "cpanelUrls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:hosting/HostingCpanelUrl:HostingCpanelUrl"
                        },
                        "description": "The URL to connect to cPanel Dashboard and to Webmail interface.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of hosting's creation (RFC 3339 format).\n"
                    },
                    "dnsStatus": {
                        "type": "string",
                        "description": "The DNS status of the hosting.\n"
                    },
                    "domain": {
                        "type": "string",
                        "description": "The domain name of the hosting.\n"
                    },
                    "email": {
                        "type": "string",
                        "description": "The contact email of the client for the hosting.\n"
                    },
                    "nameServers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:hosting/HostingNameServer:HostingNameServer"
                        },
                        "description": "List of nameservers associated with the webhosting."
                    },
                    "offerId": {
                        "type": "string",
                        "description": "The ID of the selected offer for the hosting.\n"
                    },
                    "offerName": {
                        "type": "string",
                        "description": "The name of the active offer.\n"
                    },
                    "optionIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The IDs of the selected options for the hosting.\n"
                    },
                    "options": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:hosting/HostingOption:HostingOption"
                        },
                        "description": "The active options of the hosting.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "(Deprecated) The organization ID the hosting is associated with.\n",
                        "deprecationMessage": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003efield is deprecated and will be removed in the next major version."
                    },
                    "platformHostname": {
                        "type": "string",
                        "description": "The hostname of the host platform.\n"
                    },
                    "platformNumber": {
                        "type": "integer",
                        "description": "The number of the host platform.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "records": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:hosting/HostingRecord:HostingRecord"
                        },
                        "description": "List of DNS records associated with the webhosting."
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the Hosting.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The hosting status.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the hosting.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of hosting's last update (RFC 3339 format).\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The main hosting cPanel username.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/webhosting:Webhosting"
                }
            ]
        },
        "scaleway:iam/apiKey:ApiKey": {
            "description": "Creates and manages Scaleway API Keys. For more information, refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#api-keys-3665ae).\n\n## Example Usage\n\n### With application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ciCd = new scaleway.iam.Application(\"ci_cd\", {name: \"My application\"});\nconst main = new scaleway.iam.ApiKey(\"main\", {\n    applicationId: mainScalewayIamApplication.id,\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nci_cd = scaleway.iam.Application(\"ci_cd\", name=\"My application\")\nmain = scaleway.iam.ApiKey(\"main\",\n    application_id=main_scaleway_iam_application[\"id\"],\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ciCd = new Scaleway.Iam.Application(\"ci_cd\", new()\n    {\n        Name = \"My application\",\n    });\n\n    var main = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        ApplicationId = mainScalewayIamApplication.Id,\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewApplication(ctx, \"ci_cd\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"My application\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: pulumi.Any(mainScalewayIamApplication.Id),\n\t\t\tDescription:   pulumi.String(\"a 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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ciCd = new Application(\"ciCd\", ApplicationArgs.builder()\n            .name(\"My application\")\n            .build());\n\n        var main = new ApiKey(\"main\", ApiKeyArgs.builder()\n            .applicationId(mainScalewayIamApplication.id())\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ciCd:\n    type: scaleway:iam:Application\n    name: ci_cd\n    properties:\n      name: My application\n  main:\n    type: scaleway:iam:ApiKey\n    properties:\n      applicationId: ${mainScalewayIamApplication.id}\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With user\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.User(\"main\", {email: \"test@test.com\"});\nconst mainApiKey = new scaleway.iam.ApiKey(\"main\", {\n    userId: main.id,\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.User(\"main\", email=\"test@test.com\")\nmain_api_key = scaleway.iam.ApiKey(\"main\",\n    user_id=main.id,\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.User(\"main\", new()\n    {\n        Email = \"test@test.com\",\n    });\n\n    var mainApiKey = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        UserId = main.Id,\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := iam.NewUser(ctx, \"main\", \u0026iam.UserArgs{\n\t\t\tEmail: pulumi.String(\"test@test.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tUserId:      main.ID(),\n\t\t\tDescription: pulumi.String(\"a 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.pulumi.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new User(\"main\", UserArgs.builder()\n            .email(\"test@test.com\")\n            .build());\n\n        var mainApiKey = new ApiKey(\"mainApiKey\", ApiKeyArgs.builder()\n            .userId(main.id())\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:User\n    properties:\n      email: test@test.com\n  mainApiKey:\n    type: scaleway:iam:ApiKey\n    name: main\n    properties:\n      userId: ${main.id}\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as time from \"@pulumi/time\";\n\nconst rotateAfterAYear = new time.index.Rotating(\"rotate_after_a_year\", {rotationYears: 1});\nconst main = new scaleway.iam.ApiKey(\"main\", {\n    applicationId: mainScalewayIamApplication.id,\n    expiresAt: rotateAfterAYear.rotationRfc3339,\n});\n```\n```python\nimport pulumi\nimport pulumi_time as time\nimport pulumiverse_scaleway as scaleway\n\nrotate_after_a_year = time.Rotating(\"rotate_after_a_year\", rotation_years=1)\nmain = scaleway.iam.ApiKey(\"main\",\n    application_id=main_scaleway_iam_application[\"id\"],\n    expires_at=rotate_after_a_year[\"rotationRfc3339\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rotateAfterAYear = new Time.Rotating(\"rotate_after_a_year\", new()\n    {\n        RotationYears = 1,\n    });\n\n    var main = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        ApplicationId = mainScalewayIamApplication.Id,\n        ExpiresAt = rotateAfterAYear.RotationRfc3339,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trotateAfterAYear, err := time.NewRotating(ctx, \"rotate_after_a_year\", \u0026time.RotatingArgs{\n\t\t\tRotationYears: 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: pulumi.Any(mainScalewayIamApplication.Id),\n\t\t\tExpiresAt:     rotateAfterAYear.RotationRfc3339,\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.time.Rotating;\nimport com.pulumi.time.RotatingArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rotateAfterAYear = new Rotating(\"rotateAfterAYear\", RotatingArgs.builder()\n            .rotationYears(1)\n            .build());\n\n        var main = new ApiKey(\"main\", ApiKeyArgs.builder()\n            .applicationId(mainScalewayIamApplication.id())\n            .expiresAt(rotateAfterAYear.rotationRfc3339())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rotateAfterAYear:\n    type: time:Rotating\n    name: rotate_after_a_year\n    properties:\n      rotationYears: 1\n  main:\n    type: scaleway:iam:ApiKey\n    properties:\n      applicationId: ${mainScalewayIamApplication.id}\n      expiresAt: ${rotateAfterAYear.rotationRfc3339}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApi keys can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iam/apiKey:ApiKey main 11111111111111111111\n```\n\n\u003e **Warning**: While an \u003cspan pulumi-lang-nodejs=\"`iamApiKey`\" pulumi-lang-dotnet=\"`IamApiKey`\" pulumi-lang-go=\"`iamApiKey`\" pulumi-lang-python=\"`iam_api_key`\" pulumi-lang-yaml=\"`iamApiKey`\" pulumi-lang-java=\"`iamApiKey`\"\u003e`iamApiKey`\u003c/span\u003e can be imported, its \u003cspan pulumi-lang-nodejs=\"`secretKey`\" pulumi-lang-dotnet=\"`SecretKey`\" pulumi-lang-go=\"`secretKey`\" pulumi-lang-python=\"`secret_key`\" pulumi-lang-yaml=\"`secretKey`\" pulumi-lang-java=\"`secretKey`\"\u003e`secretKey`\u003c/span\u003e is a secret that is not exposed. An imported API key will have \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e as its secret key.\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the IAM API key.\n"
                },
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application attached to the API key.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IAM API key.\n"
                },
                "creationIp": {
                    "type": "string",
                    "description": "The IP Address of the device which created the API key.\n"
                },
                "defaultProjectId": {
                    "type": "string",
                    "description": "The default Project ID to use with Object Storage.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the API key.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the IAM API key is editable.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret Key of the IAM API key.\n",
                    "secret": true
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IAM API key.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "required": [
                "accessKey",
                "createdAt",
                "creationIp",
                "defaultProjectId",
                "editable",
                "secretKey",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application attached to the API key.\n",
                    "willReplaceOnChanges": true
                },
                "defaultProjectId": {
                    "type": "string",
                    "description": "The default Project ID to use with Object Storage.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "The description of the API key.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n",
                    "willReplaceOnChanges": true
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ApiKey resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key of the IAM API key.\n"
                    },
                    "applicationId": {
                        "type": "string",
                        "description": "ID of the application attached to the API key.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the IAM API key.\n"
                    },
                    "creationIp": {
                        "type": "string",
                        "description": "The IP Address of the device which created the API key.\n"
                    },
                    "defaultProjectId": {
                        "type": "string",
                        "description": "The default Project ID to use with Object Storage.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the API key.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the IAM API key is editable.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret Key of the IAM API key.\n",
                        "secret": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the IAM API key.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamApiKey:IamApiKey"
                }
            ]
        },
        "scaleway:iam/application:Application": {
            "description": "Creates and manages Scaleway IAM Applications. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#applications-83ce5e).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.Application(\"main\", {\n    name: \"My application\",\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.Application(\"main\",\n    name=\"My application\",\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.Application(\"main\", new()\n    {\n        Name = \"My application\",\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewApplication(ctx, \"main\", \u0026iam.ApplicationArgs{\n\t\t\tName:        pulumi.String(\"My application\"),\n\t\t\tDescription: pulumi.String(\"a 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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Application(\"main\", ApplicationArgs.builder()\n            .name(\"My application\")\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:Application\n    properties:\n      name: My application\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplications can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iam/application:Application main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the application.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the iam application.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the application is editable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the iam application.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the application.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the application.\n"
                }
            },
            "required": [
                "createdAt",
                "editable",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the iam application.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the iam application.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the application.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Application resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the application.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the iam application.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the application is editable.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the iam application.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the application.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the application.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamApplication:IamApplication"
                }
            ]
        },
        "scaleway:iam/group:Group": {
            "description": "Creates and manages Scaleway IAM Groups.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#groups-f592eb).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst basic = new scaleway.iam.Group(\"basic\", {\n    name: \"iam_group_basic\",\n    description: \"basic description\",\n    applicationIds: [],\n    userIds: [],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbasic = scaleway.iam.Group(\"basic\",\n    name=\"iam_group_basic\",\n    description=\"basic description\",\n    application_ids=[],\n    user_ids=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var basic = new Scaleway.Iam.Group(\"basic\", new()\n    {\n        Name = \"iam_group_basic\",\n        Description = \"basic description\",\n        ApplicationIds = new[] {},\n        UserIds = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewGroup(ctx, \"basic\", \u0026iam.GroupArgs{\n\t\t\tName:           pulumi.String(\"iam_group_basic\"),\n\t\t\tDescription:    pulumi.String(\"basic description\"),\n\t\t\tApplicationIds: pulumi.StringArray{},\n\t\t\tUserIds:        pulumi.StringArray{},\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.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 basic = new Group(\"basic\", GroupArgs.builder()\n            .name(\"iam_group_basic\")\n            .description(\"basic description\")\n            .applicationIds()\n            .userIds()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  basic:\n    type: scaleway:iam:Group\n    properties:\n      name: iam_group_basic\n      description: basic description\n      applicationIds: []\n      userIds: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With applications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.iam.Application(\"app\", {});\nconst withApp = new scaleway.iam.Group(\"with_app\", {\n    name: \"iam_group_with_app\",\n    applicationIds: [app.id],\n    userIds: [],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.iam.Application(\"app\")\nwith_app = scaleway.iam.Group(\"with_app\",\n    name=\"iam_group_with_app\",\n    application_ids=[app.id],\n    user_ids=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Iam.Application(\"app\");\n\n    var withApp = new Scaleway.Iam.Group(\"with_app\", new()\n    {\n        Name = \"iam_group_with_app\",\n        ApplicationIds = new[]\n        {\n            app.Id,\n        },\n        UserIds = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := iam.NewApplication(ctx, \"app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewGroup(ctx, \"with_app\", \u0026iam.GroupArgs{\n\t\t\tName: pulumi.String(\"iam_group_with_app\"),\n\t\t\tApplicationIds: pulumi.StringArray{\n\t\t\t\tapp.ID(),\n\t\t\t},\n\t\t\tUserIds: pulumi.StringArray{},\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.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Application(\"app\");\n\n        var withApp = new Group(\"withApp\", GroupArgs.builder()\n            .name(\"iam_group_with_app\")\n            .applicationIds(app.id())\n            .userIds()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n  withApp:\n    type: scaleway:iam:Group\n    name: with_app\n    properties:\n      name: iam_group_with_app\n      applicationIds:\n        - ${app.id}\n      userIds: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With users\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst users = std.toset({\n    input: [\n        \"user1@mail.com\",\n        \"user2@mail.com\",\n    ],\n}).result;\nconst usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: scaleway.iam.getUser({\n    email: __value,\n}) }), {});\nconst withUsers = new scaleway.iam.Group(\"with_users\", {\n    name: \"iam_group_with_app\",\n    applicationIds: [],\n    userIds: Object.values(usersGetUser).map(user =\u003e (user.id)),\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = std.toset(input=[\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n])[\"result\"]\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(users)}\nwith_users = scaleway.iam.Group(\"with_users\",\n    name=\"iam_group_with_app\",\n    application_ids=[],\n    user_ids=[user.id for user in users_get_user.values()])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = Std.Toset.Invoke(new()\n    {\n        Input = new[]\n        {\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        },\n    }).Result;\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return Scaleway.Iam.GetUser.Invoke(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var withUsers = new Scaleway.Iam.Group(\"with_users\", new()\n    {\n        Name = \"iam_group_with_app\",\n        ApplicationIds = new[] {},\n        UserIds = (usersGetUser).Values.Select(user =\u003e \n        {\n            return user.Id;\n        }).ToList(),\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM groups can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iam/group:Group basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the applications attached to the group.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the group"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM group.\n"
                },
                "externalMembership": {
                    "type": "boolean",
                    "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the group.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the group"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the users attached to the group.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the applications attached to the group.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM group.\n"
                },
                "externalMembership": {
                    "type": "boolean",
                    "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the group.\n"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the users attached to the group.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Group resources.\n",
                "properties": {
                    "applicationIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of IDs of the applications attached to the group.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the group"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the IAM group.\n"
                    },
                    "externalMembership": {
                        "type": "boolean",
                        "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IAM group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the group.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the group"
                    },
                    "userIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of IDs of the users attached to the group.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamGroup:IamGroup"
                }
            ]
        },
        "scaleway:iam/groupMembership:GroupMembership": {
            "description": "Add members to an IAM group.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#groups-f592eb).\n\n## Example Usage\n\n### Application Membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst group = new scaleway.iam.Group(\"group\", {\n    name: \"my_group\",\n    externalMembership: true,\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my_app\"});\nconst member = new scaleway.iam.GroupMembership(\"member\", {\n    groupId: group.id,\n    applicationId: app.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ngroup = scaleway.iam.Group(\"group\",\n    name=\"my_group\",\n    external_membership=True)\napp = scaleway.iam.Application(\"app\", name=\"my_app\")\nmember = scaleway.iam.GroupMembership(\"member\",\n    group_id=group.id,\n    application_id=app.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @group = new Scaleway.Iam.Group(\"group\", new()\n    {\n        Name = \"my_group\",\n        ExternalMembership = true,\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my_app\",\n    });\n\n    var member = new Scaleway.Iam.GroupMembership(\"member\", new()\n    {\n        GroupId = @group.Id,\n        ApplicationId = app.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := iam.NewGroup(ctx, \"group\", \u0026iam.GroupArgs{\n\t\t\tName:               pulumi.String(\"my_group\"),\n\t\t\tExternalMembership: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my_app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewGroupMembership(ctx, \"member\", \u0026iam.GroupMembershipArgs{\n\t\t\tGroupId:       group.ID(),\n\t\t\tApplicationId: app.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.pulumi.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.GroupMembership;\nimport com.pulumi.scaleway.iam.GroupMembershipArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group = new Group(\"group\", GroupArgs.builder()\n            .name(\"my_group\")\n            .externalMembership(true)\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my_app\")\n            .build());\n\n        var member = new GroupMembership(\"member\", GroupMembershipArgs.builder()\n            .groupId(group.id())\n            .applicationId(app.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  group:\n    type: scaleway:iam:Group\n    properties:\n      name: my_group\n      externalMembership: true\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my_app\n  member:\n    type: scaleway:iam:GroupMembership\n    properties:\n      groupId: ${group.id}\n      applicationId: ${app.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Users membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n    const users = std.toset({\n        input: [\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        ],\n    }).result;\n    const usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: await scaleway.iam.getUser({\n        email: __value,\n    }) }), {});\n    const group = new scaleway.iam.Group(\"group\", {\n        name: \"my_group\",\n        externalMembership: true,\n    });\n    const members: scaleway.iam.GroupMembership[] = [];\n    for (const range of Object.entries(usersGetUser).sort().map(([k, v]) =\u003e ({key: k, value: v}))) {\n        members.push(new scaleway.iam.GroupMembership(`members-${range.key}`, {\n            groupId: group.id,\n            userId: range.value.id,\n        }));\n    }\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = std.toset(input=[\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n])[\"result\"]\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(users)}\ngroup = scaleway.iam.Group(\"group\",\n    name=\"my_group\",\n    external_membership=True)\nmembers: list[Any] = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in sorted((users_get_user).items())]:\n    members.append(scaleway.iam.GroupMembership(f\"members-{range['key']}\",\n        group_id=group.id,\n        user_id=range[\"value\"].id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n    var users = Std.Toset.Invoke(new()\n    {\n        Input = new[]\n        {\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        },\n    }).Result;\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return await Scaleway.Iam.GetUser.InvokeAsync(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var @group = new Scaleway.Iam.Group(\"group\", new()\n    {\n        Name = \"my_group\",\n        ExternalMembership = true,\n    });\n\n    var members = new List\u003cScaleway.Iam.GroupMembership\u003e();\n    foreach (var range in usersGetUser.Select(pair =\u003e new { pair.Key, pair.Value }))\n    {\n        members.Add(new Scaleway.Iam.GroupMembership($\"members-{range.Key}\", new()\n        {\n            GroupId = @group.Id,\n            UserId = range.Value.Id,\n        }));\n    }\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM group memberships can be imported using two format:\n\n- For user: `{group_id}/user/{user_id}`\n- For application: `{group_id}/app/{application_id}`\n\n```sh\n$ pulumi import scaleway:iam/groupMembership:GroupMembership app 11111111-1111-1111-1111-111111111111/app/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationId": {
                    "type": "string",
                    "description": "The ID of the application that will be added to the group.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group to add members to.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "required": [
                "groupId"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "The ID of the application that will be added to the group.\n",
                    "willReplaceOnChanges": true
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group to add members to.\n",
                    "willReplaceOnChanges": true
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "groupId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GroupMembership resources.\n",
                "properties": {
                    "applicationId": {
                        "type": "string",
                        "description": "The ID of the application that will be added to the group.\n",
                        "willReplaceOnChanges": true
                    },
                    "groupId": {
                        "type": "string",
                        "description": "ID of the group to add members to.\n",
                        "willReplaceOnChanges": true
                    },
                    "userId": {
                        "type": "string",
                        "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamGroupMembership:IamGroupMembership"
                }
            ]
        },
        "scaleway:iam/policy:Policy": {
            "description": "Creates and manages Scaleway IAM Policies. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#path-policies-create-a-new-policy).\n\n\u003e You can find a detailed list of all permission sets available at Scaleway in the permission sets [reference page](https://www.scaleway.com/en/docs/iam/reference-content/permission-sets/).\n\n## Example Usage\n\n### Create a policy for an organization's project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst objectReadOnly = new scaleway.iam.Policy(\"object_read_only\", {\n    name: \"my policy\",\n    description: \"gives app readonly access to object storage in project\",\n    applicationId: app.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ObjectStorageReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.account.get_project(name=\"default\")\napp = scaleway.iam.Application(\"app\", name=\"my app\")\nobject_read_only = scaleway.iam.Policy(\"object_read_only\",\n    name=\"my policy\",\n    description=\"gives app readonly access to object storage in project\",\n    application_id=app.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ObjectStorageReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var objectReadOnly = new Scaleway.Iam.Policy(\"object_read_only\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app readonly access to object storage in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"object_read_only\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app readonly access to object storage in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageReadOnly\"),\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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var objectReadOnly = new Policy(\"objectReadOnly\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app readonly access to object storage in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ObjectStorageReadOnly\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  objectReadOnly:\n    type: scaleway:iam:Policy\n    name: object_read_only\n    properties:\n      name: my policy\n      description: gives app readonly access to object storage in project\n      applicationId: ${app.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ObjectStorageReadOnly\nvariables:\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a policy for all current and future projects in an organization\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst objectReadOnly = new scaleway.iam.Policy(\"object_read_only\", {\n    name: \"my policy\",\n    description: \"gives app readonly access to object storage in project\",\n    applicationId: app.id,\n    rules: [{\n        organizationId: app.organizationId,\n        permissionSetNames: [\"ObjectStorageReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.iam.Application(\"app\", name=\"my app\")\nobject_read_only = scaleway.iam.Policy(\"object_read_only\",\n    name=\"my policy\",\n    description=\"gives app readonly access to object storage in project\",\n    application_id=app.id,\n    rules=[{\n        \"organization_id\": app.organization_id,\n        \"permission_set_names\": [\"ObjectStorageReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var objectReadOnly = new Scaleway.Iam.Policy(\"object_read_only\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app readonly access to object storage in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                OrganizationId = app.OrganizationId,\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"object_read_only\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app readonly access to object storage in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tOrganizationId: app.OrganizationId,\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageReadOnly\"),\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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var objectReadOnly = new Policy(\"objectReadOnly\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app readonly access to object storage in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .organizationId(app.organizationId())\n                .permissionSetNames(\"ObjectStorageReadOnly\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  objectReadOnly:\n    type: scaleway:iam:Policy\n    name: object_read_only\n    properties:\n      name: my policy\n      description: gives app readonly access to object storage in project\n      applicationId: ${app.id}\n      rules:\n        - organizationId: ${app.organizationId}\n          permissionSetNames:\n            - ObjectStorageReadOnly\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a permission for multiple users using a group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst users = [\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n];\nconst projectName = \"default\";\nconst project = scaleway.account.getProject({\n    name: projectName,\n});\nconst usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: scaleway.iam.getUser({\n    email: __value,\n}) }), {});\nconst withUsers = new scaleway.iam.Group(\"with_users\", {\n    name: \"developers\",\n    userIds: Object.values(usersGetUser).map(user =\u003e (user.id)),\n});\nconst iamTfStoragePolicy = new scaleway.iam.Policy(\"iam_tf_storage_policy\", {\n    name: \"developers permissions\",\n    groupId: withUsers.id,\n    rules: [{\n        projectIds: [project.then(project =\u003e project.id)],\n        permissionSetNames: [\"InstancesReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = [\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n]\nproject_name = \"default\"\nproject = scaleway.account.get_project(name=project_name)\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(std.toset(input=users)[\"result\"])}\nwith_users = scaleway.iam.Group(\"with_users\",\n    name=\"developers\",\n    user_ids=[user.id for user in users_get_user.values()])\niam_tf_storage_policy = scaleway.iam.Policy(\"iam_tf_storage_policy\",\n    name=\"developers permissions\",\n    group_id=with_users.id,\n    rules=[{\n        \"project_ids\": [project.id],\n        \"permission_set_names\": [\"InstancesReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = new[]\n    {\n        \"user1@mail.com\",\n        \"user2@mail.com\",\n    };\n\n    var projectName = \"default\";\n\n    var project = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = projectName,\n    });\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return Scaleway.Iam.GetUser.Invoke(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var withUsers = new Scaleway.Iam.Group(\"with_users\", new()\n    {\n        Name = \"developers\",\n        UserIds = (usersGetUser).Values.Select(user =\u003e \n        {\n            return user.Id;\n        }).ToList(),\n    });\n\n    var iamTfStoragePolicy = new Scaleway.Iam.Policy(\"iam_tf_storage_policy\", new()\n    {\n        Name = \"developers permissions\",\n        GroupId = withUsers.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    project.Apply(getProjectResult =\u003e getProjectResult.Id),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"InstancesReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a policy with a particular condition\n\nIAM policy rule can use a condition to be applied.\nThe following variables are available:\n\n- `request.ip`\n- `request.user_agent`\n- `request.time`\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.Policy(\"main\", {\n    name: \"tf_tests_policy_condition\",\n    noPrincipal: true,\n    rules: [{\n        organizationId: \"%s\",\n        permissionSetNames: [\"AllProductsFullAccess\"],\n        condition: \"request.user_agent == 'My User Agent'\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.Policy(\"main\",\n    name=\"tf_tests_policy_condition\",\n    no_principal=True,\n    rules=[{\n        \"organization_id\": \"%s\",\n        \"permission_set_names\": [\"AllProductsFullAccess\"],\n        \"condition\": \"request.user_agent == 'My User Agent'\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.Policy(\"main\", new()\n    {\n        Name = \"tf_tests_policy_condition\",\n        NoPrincipal = true,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                OrganizationId = \"%s\",\n                PermissionSetNames = new[]\n                {\n                    \"AllProductsFullAccess\",\n                },\n                Condition = \"request.user_agent == 'My User Agent'\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewPolicy(ctx, \"main\", \u0026iam.PolicyArgs{\n\t\t\tName:        pulumi.String(\"tf_tests_policy_condition\"),\n\t\t\tNoPrincipal: pulumi.Bool(true),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tOrganizationId: pulumi.String(\"%s\"),\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"AllProductsFullAccess\"),\n\t\t\t\t\t},\n\t\t\t\t\tCondition: pulumi.String(\"request.user_agent == 'My User Agent'\"),\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.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Policy(\"main\", PolicyArgs.builder()\n            .name(\"tf_tests_policy_condition\")\n            .noPrincipal(true)\n            .rules(PolicyRuleArgs.builder()\n                .organizationId(\"%s\")\n                .permissionSetNames(\"AllProductsFullAccess\")\n                .condition(\"request.user_agent == 'My User Agent'\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:Policy\n    properties:\n      name: tf_tests_policy_condition\n      noPrincipal: true\n      rules:\n        - organizationId: '%s'\n          permissionSetNames:\n            - AllProductsFullAccess\n          condition: request.user_agent == 'My User Agent'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicies can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iam/policy:Policy main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application the policy will be linked to\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the policy.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM policy.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the policy is editable.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group the policy will be linked to\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM policy.\n"
                },
                "noPrincipal": {
                    "type": "boolean",
                    "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:iam/PolicyRule:PolicyRule"
                    },
                    "description": "List of rules in the policy.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IAM policy.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the policy.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user the policy will be linked to\n"
                }
            },
            "required": [
                "createdAt",
                "editable",
                "name",
                "organizationId",
                "rules",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application the policy will be linked to\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM policy.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group the policy will be linked to\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM policy.\n"
                },
                "noPrincipal": {
                    "type": "boolean",
                    "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:iam/PolicyRule:PolicyRule"
                    },
                    "description": "List of rules in the policy.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IAM policy.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user the policy will be linked to\n"
                }
            },
            "requiredInputs": [
                "rules"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Policy resources.\n",
                "properties": {
                    "applicationId": {
                        "type": "string",
                        "description": "ID of the application the policy will be linked to\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the policy.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the IAM policy.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the policy is editable.\n"
                    },
                    "groupId": {
                        "type": "string",
                        "description": "ID of the group the policy will be linked to\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IAM policy.\n"
                    },
                    "noPrincipal": {
                        "type": "boolean",
                        "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:iam/PolicyRule:PolicyRule"
                        },
                        "description": "List of rules in the policy.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the IAM policy.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the policy.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "ID of the user the policy will be linked to\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamPolicy:IamPolicy"
                }
            ]
        },
        "scaleway:iam/saml:Saml": {
            "description": "Manages SAML activation for an organization. SAML (Security Assertion Markup Language) is an open standard for exchanging authentication and authorization data between parties, specifically between an identity provider and a service provider. This resource allows you to enable and disable SAML-based single sign-on for your Scaleway organization.\n\nFor configuring SAML parameters (\u003cspan pulumi-lang-nodejs=\"`entityId`\" pulumi-lang-dotnet=\"`EntityId`\" pulumi-lang-go=\"`entityId`\" pulumi-lang-python=\"`entity_id`\" pulumi-lang-yaml=\"`entityId`\" pulumi-lang-java=\"`entityId`\"\u003e`entityId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`singleSignOnUrl`\" pulumi-lang-dotnet=\"`SingleSignOnUrl`\" pulumi-lang-go=\"`singleSignOnUrl`\" pulumi-lang-python=\"`single_sign_on_url`\" pulumi-lang-yaml=\"`singleSignOnUrl`\" pulumi-lang-java=\"`singleSignOnUrl`\"\u003e`singleSignOnUrl`\u003c/span\u003e), use the \u003cspan pulumi-lang-nodejs=\"`scalewayIamUpdateSamlConfiguration`\" pulumi-lang-dotnet=\"`ScalewayIamUpdateSamlConfiguration`\" pulumi-lang-go=\"`scalewayIamUpdateSamlConfiguration`\" pulumi-lang-python=\"`scaleway_iam_update_saml_configuration`\" pulumi-lang-yaml=\"`scalewayIamUpdateSamlConfiguration`\" pulumi-lang-java=\"`scalewayIamUpdateSamlConfiguration`\"\u003e`scalewayIamUpdateSamlConfiguration`\u003c/span\u003e action.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Enable IAM SAML for an organization\nconst main = new scaleway.iam.Saml(\"main\", {organizationId: \"11111111-1111-1111-1111-111111111111\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Enable IAM SAML for an organization\nmain = scaleway.iam.Saml(\"main\", organization_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Enable IAM SAML for an organization\n    var main = new Scaleway.Iam.Saml(\"main\", new()\n    {\n        OrganizationId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Enable IAM SAML for an organization\n\t\t_, err := iam.NewSaml(ctx, \"main\", \u0026iam.SamlArgs{\n\t\t\tOrganizationId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.iam.Saml;\nimport com.pulumi.scaleway.iam.SamlArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Enable IAM SAML for an organization\n        var main = new Saml(\"main\", SamlArgs.builder()\n            .organizationId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Enable IAM SAML for an organization\n  main:\n    type: scaleway:iam:Saml\n    properties:\n      organizationId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "entityId": {
                    "type": "string",
                    "description": "(Computed) The entity ID of the Service Provider.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization ID will be used.\n"
                },
                "serviceProvider": {
                    "$ref": "#/types/scaleway:iam/SamlServiceProvider:SamlServiceProvider",
                    "description": "(Computed) The Service Provider information. It contains:\n"
                },
                "singleSignOnUrl": {
                    "type": "string",
                    "description": "(Computed) The single sign-on URL of the SAML Identity Provider.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Computed) The status of the SAML configuration.\n"
                }
            },
            "required": [
                "entityId",
                "organizationId",
                "serviceProvider",
                "singleSignOnUrl",
                "status"
            ],
            "inputProperties": {
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization ID will be used.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Saml resources.\n",
                "properties": {
                    "entityId": {
                        "type": "string",
                        "description": "(Computed) The entity ID of the Service Provider.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID. If not provided, the default organization ID will be used.\n"
                    },
                    "serviceProvider": {
                        "$ref": "#/types/scaleway:iam/SamlServiceProvider:SamlServiceProvider",
                        "description": "(Computed) The Service Provider information. It contains:\n"
                    },
                    "singleSignOnUrl": {
                        "type": "string",
                        "description": "(Computed) The single sign-on URL of the SAML Identity Provider.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "(Computed) The status of the SAML configuration.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:iam/samlCertificate:SamlCertificate": {
            "description": "Manages SAML certificates for an organization. SAML certificates are used to establish trust between your organization and identity providers. SAML (Security Assertion Markup Language) is an open standard for exchanging authentication and authorization data between parties, specifically between an identity provider and a service provider. This resource allows you to manage SAML certificates in your Scaleway organization.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Enable IAM SAML for the default organization and add a signing certificate\nconst test = new scaleway.iam.Saml(\"test\", {});\nconst main = new scaleway.iam.SamlCertificate(\"main\", {\n    samlId: test.id,\n    type: \"signing\",\n    content: \"\u003csigning certificate generated by your Identity Provider\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Enable IAM SAML for the default organization and add a signing certificate\ntest = scaleway.iam.Saml(\"test\")\nmain = scaleway.iam.SamlCertificate(\"main\",\n    saml_id=test.id,\n    type=\"signing\",\n    content=\"\u003csigning certificate generated by your Identity Provider\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Enable IAM SAML for the default organization and add a signing certificate\n    var test = new Scaleway.Iam.Saml(\"test\");\n\n    var main = new Scaleway.Iam.SamlCertificate(\"main\", new()\n    {\n        SamlId = test.Id,\n        Type = \"signing\",\n        Content = \"\u003csigning certificate generated by your Identity Provider\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Enable IAM SAML for the default organization and add a signing certificate\n\t\ttest, err := iam.NewSaml(ctx, \"test\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewSamlCertificate(ctx, \"main\", \u0026iam.SamlCertificateArgs{\n\t\t\tSamlId:  test.ID(),\n\t\t\tType:    pulumi.String(\"signing\"),\n\t\t\tContent: pulumi.String(\"\u003csigning certificate generated by your Identity Provider\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.pulumi.scaleway.iam.Saml;\nimport com.pulumi.scaleway.iam.SamlCertificate;\nimport com.pulumi.scaleway.iam.SamlCertificateArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Enable IAM SAML for the default organization and add a signing certificate\n        var test = new Saml(\"test\");\n\n        var main = new SamlCertificate(\"main\", SamlCertificateArgs.builder()\n            .samlId(test.id())\n            .type(\"signing\")\n            .content(\"\u003csigning certificate generated by your Identity Provider\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Enable IAM SAML for the default organization and add a signing certificate\n  test:\n    type: scaleway:iam:Saml\n  main:\n    type: scaleway:iam:SamlCertificate\n    properties:\n      samlId: ${test.id}\n      type: signing\n      content: \u003csigning certificate generated by your Identity Provider\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The content of the SAML certificate\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "(String) The expiration date and time of the SAML certificate\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "(String) The origin of the SAML certificate. Possible values are: \u003cspan pulumi-lang-nodejs=\"`scaleway`\" pulumi-lang-dotnet=\"`Scaleway`\" pulumi-lang-go=\"`scaleway`\" pulumi-lang-python=\"`scaleway`\" pulumi-lang-yaml=\"`scaleway`\" pulumi-lang-java=\"`scaleway`\"\u003e`scaleway`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`identityProvider`\" pulumi-lang-dotnet=\"`IdentityProvider`\" pulumi-lang-go=\"`identityProvider`\" pulumi-lang-python=\"`identity_provider`\" pulumi-lang-yaml=\"`identityProvider`\" pulumi-lang-java=\"`identityProvider`\"\u003e`identityProvider`\u003c/span\u003e.\n"
                },
                "samlId": {
                    "type": "string",
                    "description": "The ID of the SAML configuration. If not provided, the organization's SAML configuration is used.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the SAML certificate. Possible values are: \u003cspan pulumi-lang-nodejs=\"`signing`\" pulumi-lang-dotnet=\"`Signing`\" pulumi-lang-go=\"`signing`\" pulumi-lang-python=\"`signing`\" pulumi-lang-yaml=\"`signing`\" pulumi-lang-java=\"`signing`\"\u003e`signing`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`encryption`\" pulumi-lang-dotnet=\"`Encryption`\" pulumi-lang-go=\"`encryption`\" pulumi-lang-python=\"`encryption`\" pulumi-lang-yaml=\"`encryption`\" pulumi-lang-java=\"`encryption`\"\u003e`encryption`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "content",
                "expiresAt",
                "organizationId",
                "origin",
                "samlId",
                "type"
            ],
            "inputProperties": {
                "content": {
                    "type": "string",
                    "description": "The content of the SAML certificate\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                },
                "samlId": {
                    "type": "string",
                    "description": "The ID of the SAML configuration. If not provided, the organization's SAML configuration is used.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the SAML certificate. Possible values are: \u003cspan pulumi-lang-nodejs=\"`signing`\" pulumi-lang-dotnet=\"`Signing`\" pulumi-lang-go=\"`signing`\" pulumi-lang-python=\"`signing`\" pulumi-lang-yaml=\"`signing`\" pulumi-lang-java=\"`signing`\"\u003e`signing`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`encryption`\" pulumi-lang-dotnet=\"`Encryption`\" pulumi-lang-go=\"`encryption`\" pulumi-lang-python=\"`encryption`\" pulumi-lang-yaml=\"`encryption`\" pulumi-lang-java=\"`encryption`\"\u003e`encryption`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "content",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SamlCertificate resources.\n",
                "properties": {
                    "content": {
                        "type": "string",
                        "description": "The content of the SAML certificate\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "(String) The expiration date and time of the SAML certificate\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                    },
                    "origin": {
                        "type": "string",
                        "description": "(String) The origin of the SAML certificate. Possible values are: \u003cspan pulumi-lang-nodejs=\"`scaleway`\" pulumi-lang-dotnet=\"`Scaleway`\" pulumi-lang-go=\"`scaleway`\" pulumi-lang-python=\"`scaleway`\" pulumi-lang-yaml=\"`scaleway`\" pulumi-lang-java=\"`scaleway`\"\u003e`scaleway`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`identityProvider`\" pulumi-lang-dotnet=\"`IdentityProvider`\" pulumi-lang-go=\"`identityProvider`\" pulumi-lang-python=\"`identity_provider`\" pulumi-lang-yaml=\"`identityProvider`\" pulumi-lang-java=\"`identityProvider`\"\u003e`identityProvider`\u003c/span\u003e.\n"
                    },
                    "samlId": {
                        "type": "string",
                        "description": "The ID of the SAML configuration. If not provided, the organization's SAML configuration is used.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the SAML certificate. Possible values are: \u003cspan pulumi-lang-nodejs=\"`signing`\" pulumi-lang-dotnet=\"`Signing`\" pulumi-lang-go=\"`signing`\" pulumi-lang-python=\"`signing`\" pulumi-lang-yaml=\"`signing`\" pulumi-lang-java=\"`signing`\"\u003e`signing`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`encryption`\" pulumi-lang-dotnet=\"`Encryption`\" pulumi-lang-go=\"`encryption`\" pulumi-lang-python=\"`encryption`\" pulumi-lang-yaml=\"`encryption`\" pulumi-lang-java=\"`encryption`\"\u003e`encryption`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:iam/scim:Scim": {
            "description": "SCIM (System for Cross-domain Identity Management) resource allows you to enable or disable SCIM for an organization.\n\nSCIM is a standard for automating the exchange of user identity information between identity domains, or IT systems. When enabled, it allows for automated provisioning and deprovisioning of user accounts.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Enable IAM SCIM for an organization\nconst main = new scaleway.iam.Scim(\"main\", {organizationId: \"11111111-1111-1111-1111-111111111111\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Enable IAM SCIM for an organization\nmain = scaleway.iam.Scim(\"main\", organization_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Enable IAM SCIM for an organization\n    var main = new Scaleway.Iam.Scim(\"main\", new()\n    {\n        OrganizationId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Enable IAM SCIM for an organization\n\t\t_, err := iam.NewScim(ctx, \"main\", \u0026iam.ScimArgs{\n\t\t\tOrganizationId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.iam.Scim;\nimport com.pulumi.scaleway.iam.ScimArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Enable IAM SCIM for an organization\n        var main = new Scim(\"main\", ScimArgs.builder()\n            .organizationId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Enable IAM SCIM for an organization\n  main:\n    type: scaleway:iam:Scim\n    properties:\n      organizationId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSCIM can be imported using the organization ID:\n\n```sh\n$ pulumi import scaleway:iam/scim:Scim main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of SCIM configuration creation.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                }
            },
            "required": [
                "createdAt",
                "organizationId"
            ],
            "inputProperties": {
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Scim resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of SCIM configuration creation.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID. If not provided, the default organization configured in the provider is used.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:iam/sshKey:SshKey": {
            "description": "Creates and manages Scaleway IAM SSH Keys.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#ssh-keys-d8ccd4).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewSshKey(ctx, \"main\", \u0026iam.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"\u003cYOUR-PUBLIC-SSH-KEY\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.pulumi.scaleway.iam.SshKey;\nimport com.pulumi.scaleway.iam.SshKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:SshKey\n    properties:\n      name: main\n      publicKey: \u003cYOUR-PUBLIC-SSH-KEY\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH keys can be imported using the \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 scaleway:iam/sshKey:SshKey main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the SSH key.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status.\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the iam SSH key.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the organization the SSH key is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the SSH key.\n"
                }
            },
            "required": [
                "createdAt",
                "fingerprint",
                "name",
                "organizationId",
                "projectId",
                "publicKey",
                "updatedAt"
            ],
            "inputProperties": {
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SshKey resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the SSH key.\n"
                    },
                    "disabled": {
                        "type": "boolean",
                        "description": "The SSH key status.\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the iam SSH key.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The ID of the organization the SSH key is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public SSH key to be added.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the SSH key.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamSshKey:IamSshKey"
                }
            ]
        },
        "scaleway:iam/user:User": {
            "description": "Creates and manages Scaleway IAM [Users](https://www.scaleway.com/en/docs/iam/concepts/#member).\n\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iam/#path-users-list-users-of-an-organization).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic IAM user creation\nconst user = new scaleway.iam.User(\"user\", {\n    email: \"foo@test.com\",\n    tags: [\"test-tag\"],\n    username: \"foo\",\n    firstName: \"Foo\",\n    lastName: \"Bar\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Basic IAM user creation\nuser = scaleway.iam.User(\"user\",\n    email=\"foo@test.com\",\n    tags=[\"test-tag\"],\n    username=\"foo\",\n    first_name=\"Foo\",\n    last_name=\"Bar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic IAM user creation\n    var user = new Scaleway.Iam.User(\"user\", new()\n    {\n        Email = \"foo@test.com\",\n        Tags = new[]\n        {\n            \"test-tag\",\n        },\n        Username = \"foo\",\n        FirstName = \"Foo\",\n        LastName = \"Bar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic IAM user creation\n\t\t_, err := iam.NewUser(ctx, \"user\", \u0026iam.UserArgs{\n\t\t\tEmail: pulumi.String(\"foo@test.com\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test-tag\"),\n\t\t\t},\n\t\t\tUsername:  pulumi.String(\"foo\"),\n\t\t\tFirstName: pulumi.String(\"Foo\"),\n\t\t\tLastName:  pulumi.String(\"Bar\"),\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.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 IAM user creation\n        var user = new User(\"user\", UserArgs.builder()\n            .email(\"foo@test.com\")\n            .tags(\"test-tag\")\n            .username(\"foo\")\n            .firstName(\"Foo\")\n            .lastName(\"Bar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic IAM user creation\n  user:\n    type: scaleway:iam:User\n    properties:\n      email: foo@test.com\n      tags:\n        - test-tag\n      username: foo\n      firstName: Foo\n      lastName: Bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst users = [\n    {\n        email: \"test@test.com\",\n        username: \"test\",\n    },\n    {\n        email: \"test2@test.com\",\n        username: \"test2\",\n    },\n];\nconst usersUser: scaleway.iam.User[] = [];\nfor (const range = {value: 0}; range.value \u003c users.length; range.value++) {\n    usersUser.push(new scaleway.iam.User(`users-${range.value}`, {\n        email: users[range.value].email,\n        username: users[range.value].username,\n    }));\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumiverse_scaleway as scaleway\n\nusers = [\n    {\n        \"email\": \"test@test.com\",\n        \"username\": \"test\",\n    },\n    {\n        \"email\": \"test2@test.com\",\n        \"username\": \"test2\",\n    },\n]\nusers_user: list[Any] = []\nfor range in [{\"value\": i} for i in range(0, len(users))]:\n    users_user.append(scaleway.iam.User(f\"users-{range['value']}\",\n        email=users[range[\"value\"]][\"email\"],\n        username=users[range[\"value\"]][\"username\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = new[]\n    {\n        \n        {\n            { \"email\", \"test@test.com\" },\n            { \"username\", \"test\" },\n        },\n        \n        {\n            { \"email\", \"test2@test.com\" },\n            { \"username\", \"test2\" },\n        },\n    };\n\n    var usersUser = new List\u003cScaleway.Iam.User\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c users.Length; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        usersUser.Add(new Scaleway.Iam.User($\"users-{range.Value}\", new()\n        {\n            Email = users[range.Value].Email,\n            Username = users[range.Value].Username,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tusers := []map[string]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"email\":    \"test@test.com\",\n\t\t\t\t\"username\": \"test\",\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"email\":    \"test2@test.com\",\n\t\t\t\t\"username\": \"test2\",\n\t\t\t},\n\t\t}\n\t\tvar usersUser []*iam.User\n\t\tfor index := 0; index \u003c len(users); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := iam.NewUser(ctx, fmt.Sprintf(\"users-%v\", key0), \u0026iam.UserArgs{\n\t\t\t\tEmail:    pulumi.String(users[val0][\"email\"].(string)),\n\t\t\t\tUsername: pulumi.String(users[val0][\"username\"].(string)),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tusersUser = append(usersUser, __res)\n\t\t}\n\t\treturn nil\n\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.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 users = Arrays.asList(        \n            Map.ofEntries(\n                Map.entry(\"email\", \"test@test.com\"),\n                Map.entry(\"username\", \"test\")\n            ),\n            Map.ofEntries(\n                Map.entry(\"email\", \"test2@test.com\"),\n                Map.entry(\"username\", \"test2\")\n            ));\n\n        for (var i = 0; i \u003c users.length(); i++) {\n            new User(\"usersUser-\" + i, UserArgs.builder()\n                .email(users[range.value()].email())\n                .username(users[range.value()].username())\n                .build());\n\n        \n}\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM users can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iam/user:User basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "accountRootUserId": {
                    "type": "string",
                    "description": "The ID of the account root user associated with the user.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IAM user.\n"
                },
                "deletable": {
                    "type": "boolean",
                    "description": "Whether the IAM user is deletable.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "The user's first name.\n"
                },
                "lastLoginAt": {
                    "type": "string",
                    "description": "The date of the last login.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "The user's last name.\n"
                },
                "locale": {
                    "type": "string",
                    "description": "The user's locale (e.g., en_US).\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Whether the user is locked.\n"
                },
                "mfa": {
                    "type": "boolean",
                    "description": "Whether the MFA is enabled.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                    "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "The user's phone number.\n"
                },
                "sendPasswordEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send an email containing the password for first access.\n"
                },
                "sendWelcomeEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the user.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IAM user.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the IAM user.\n"
                }
            },
            "required": [
                "accountRootUserId",
                "createdAt",
                "deletable",
                "email",
                "lastLoginAt",
                "locale",
                "locked",
                "mfa",
                "organizationId",
                "status",
                "type",
                "updatedAt",
                "username"
            ],
            "inputProperties": {
                "email": {
                    "type": "string",
                    "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "The user's first name.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "The user's last name.\n"
                },
                "locale": {
                    "type": "string",
                    "description": "The user's locale (e.g., en_US).\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                    "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "The user's phone number.\n"
                },
                "sendPasswordEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send an email containing the password for first access.\n"
                },
                "sendWelcomeEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the user.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the IAM user.\n"
                }
            },
            "requiredInputs": [
                "email",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering User resources.\n",
                "properties": {
                    "accountRootUserId": {
                        "type": "string",
                        "description": "The ID of the account root user associated with the user.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the IAM user.\n"
                    },
                    "deletable": {
                        "type": "boolean",
                        "description": "Whether the IAM user is deletable.\n"
                    },
                    "email": {
                        "type": "string",
                        "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                    },
                    "firstName": {
                        "type": "string",
                        "description": "The user's first name.\n"
                    },
                    "lastLoginAt": {
                        "type": "string",
                        "description": "The date of the last login.\n"
                    },
                    "lastName": {
                        "type": "string",
                        "description": "The user's last name.\n"
                    },
                    "locale": {
                        "type": "string",
                        "description": "The user's locale (e.g., en_US).\n"
                    },
                    "locked": {
                        "type": "boolean",
                        "description": "Whether the user is locked.\n"
                    },
                    "mfa": {
                        "type": "boolean",
                        "description": "Whether the MFA is enabled.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                        "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "phoneNumber": {
                        "type": "string",
                        "description": "The user's phone number.\n"
                    },
                    "sendPasswordEmail": {
                        "type": "boolean",
                        "description": "Whether or not to send an email containing the password for first access.\n"
                    },
                    "sendWelcomeEmail": {
                        "type": "boolean",
                        "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the user.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the IAM user.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The username of the IAM user.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/iamUser:IamUser"
                }
            ]
        },
        "scaleway:index/accountProject:AccountProject": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.account.Project`\" pulumi-lang-dotnet=\"`scaleway.account.Project`\" pulumi-lang-go=\"`account.Project`\" pulumi-lang-python=\"`account.Project`\" pulumi-lang-yaml=\"`scaleway.account.Project`\" pulumi-lang-java=\"`scaleway.account.Project`\"\u003e`scaleway.account.Project`\u003c/span\u003e resource allows you to create and manage the Projects of a Scaleway Organization.\n\nRefer to the Organizations and Projects [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/) and [API documentation](https://www.scaleway.com/en/developers/api/account/project-api/) for more information.\n\n## Example Usage\n\n### Create a Scaleway Project\n\nThe following command allows you to create a project named \u003cspan pulumi-lang-nodejs=\"`project`\" pulumi-lang-dotnet=\"`Project`\" pulumi-lang-go=\"`project`\" pulumi-lang-python=\"`project`\" pulumi-lang-yaml=\"`project`\" pulumi-lang-java=\"`project`\"\u003e`project`\u003c/span\u003e.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"project\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"project\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"project\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use a project in provider configuration\n\nIf you want to use as default a project created in terraform you can use a temporary provider alias.\nThis project can then be used to configure your default provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"my_project\"});\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"PRO2-XXS\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"my_project\")\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"PRO2-XXS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"my_project\",\n    });\n\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"PRO2-XXS\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"my_project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"PRO2-XXS\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"my_project\")\n            .build());\n\n        var server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"PRO2-XXS\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: my_project\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: PRO2-XXS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjects can be imported using the \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 argument, as shown below:\n\n```sh\n$ pulumi import scaleway:index/accountProject:AccountProject project 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The creation time of the Project.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The last update time of the Project.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AccountProject resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The creation time of the Project.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the Project.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Project.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e)The organization ID the Project is associated with. Any change made to the \u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e will recreate the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The last update time of the Project.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/accountproject.AccountProject has been deprecated in favor of scaleway.account/project.Project"
        },
        "scaleway:index/accountSshKey:AccountSshKey": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.account.SshKey`\" pulumi-lang-dotnet=\"`scaleway.account.SshKey`\" pulumi-lang-go=\"`account.SshKey`\" pulumi-lang-python=\"`account.SshKey`\" pulumi-lang-yaml=\"`scaleway.account.SshKey`\" pulumi-lang-java=\"`scaleway.account.SshKey`\"\u003e`scaleway.account.SshKey`\u003c/span\u003e resource allows you to create and manage the Projects of a Scaleway Organization.\n\nRefer to the Organizations and Projects [documentation](https://www.scaleway.com/en/docs/organizations-and-projects/) and [API documentation](https://www.scaleway.com/en/developers/api/account/project-api/) for more information.\n\n!\u003e **Important:**  The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.account.SshKey`\" pulumi-lang-dotnet=\"`scaleway.account.SshKey`\" pulumi-lang-go=\"`account.SshKey`\" pulumi-lang-python=\"`account.SshKey`\" pulumi-lang-yaml=\"`scaleway.account.SshKey`\" pulumi-lang-java=\"`scaleway.account.SshKey`\"\u003e`scaleway.account.SshKey`\u003c/span\u003e has been deprecated and will no longer be supported. Instead, use \u003cspan pulumi-lang-nodejs=\"`scaleway.iam.SshKey`\" pulumi-lang-dotnet=\"`scaleway.iam.SshKey`\" pulumi-lang-go=\"`iam.SshKey`\" pulumi-lang-python=\"`iam.SshKey`\" pulumi-lang-yaml=\"`scaleway.iam.SshKey`\" pulumi-lang-java=\"`scaleway.iam.SshKey`\"\u003e`scaleway.iam.SshKey`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.account.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.account.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Account.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := account.NewSshKey(ctx, \"main\", \u0026account.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"\u003cYOUR-PUBLIC-SSH-KEY\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.pulumi.scaleway.account.SshKey;\nimport com.pulumi.scaleway.account.SshKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:account:SshKey\n    properties:\n      name: main\n      publicKey: \u003cYOUR-PUBLIC-SSH-KEY\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH keys can be imported using the \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 scaleway:index/accountSshKey:AccountSshKey main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the iam SSH Key"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the iam SSH key"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the SSH key is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the iam SSH Key"
                }
            },
            "required": [
                "createdAt",
                "fingerprint",
                "name",
                "organizationId",
                "projectId",
                "publicKey",
                "updatedAt"
            ],
            "inputProperties": {
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AccountSshKey resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the iam SSH Key"
                    },
                    "disabled": {
                        "type": "boolean",
                        "description": "The SSH key status"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the iam SSH key"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the SSH key is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public SSH key to be added.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the iam SSH Key"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/accountsshkey.AccountSshKey has been deprecated in favor of scaleway.account/sshkey.SshKey"
        },
        "scaleway:index/appleSiliconServer:AppleSiliconServer": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.applesilicon.Server`\" pulumi-lang-dotnet=\"`scaleway.applesilicon.Server`\" pulumi-lang-go=\"`applesilicon.Server`\" pulumi-lang-python=\"`applesilicon.Server`\" pulumi-lang-yaml=\"`scaleway.applesilicon.Server`\" pulumi-lang-java=\"`scaleway.applesilicon.Server`\"\u003e`scaleway.applesilicon.Server`\u003c/span\u003e resource creates and manages Scaleway Apple silicon servers.\n\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/apple-silicon/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.applesilicon.Server(\"server\", {\n    name: \"test-m1\",\n    type: \"M1-M\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.applesilicon.Server(\"server\",\n    name=\"test-m1\",\n    type=\"M1-M\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Applesilicon.Server(\"server\", new()\n    {\n        Name = \"test-m1\",\n        Type = \"M1-M\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := applesilicon.NewServer(ctx, \"server\", \u0026applesilicon.ServerArgs{\n\t\t\tName: pulumi.String(\"test-m1\"),\n\t\t\tType: pulumi.String(\"M1-M\"),\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.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .name(\"test-m1\")\n            .type(\"M1-M\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:applesilicon:Server\n    properties:\n      name: test-m1\n      type: M1-M\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable VPC and attach private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc_apple_silicon = new scaleway.network.Vpc(\"vpc-apple-silicon\", {name: \"vpc-apple-silicon\"});\nconst pn_apple_silicon = new scaleway.network.PrivateNetwork(\"pn-apple-silicon\", {\n    name: \"pn-apple-silicon\",\n    vpcId: vpc_apple_silicon.id,\n});\nconst my_server = new scaleway.applesilicon.Server(\"my-server\", {\n    name: \"TestAccServerEnableVPC\",\n    type: \"M2-M\",\n    enableVpc: true,\n    privateNetworks: [{\n        id: pn_apple_silicon.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc_apple_silicon = scaleway.network.Vpc(\"vpc-apple-silicon\", name=\"vpc-apple-silicon\")\npn_apple_silicon = scaleway.network.PrivateNetwork(\"pn-apple-silicon\",\n    name=\"pn-apple-silicon\",\n    vpc_id=vpc_apple_silicon.id)\nmy_server = scaleway.applesilicon.Server(\"my-server\",\n    name=\"TestAccServerEnableVPC\",\n    type=\"M2-M\",\n    enable_vpc=True,\n    private_networks=[{\n        \"id\": pn_apple_silicon.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc_apple_silicon = new Scaleway.Network.Vpc(\"vpc-apple-silicon\", new()\n    {\n        Name = \"vpc-apple-silicon\",\n    });\n\n    var pn_apple_silicon = new Scaleway.Network.PrivateNetwork(\"pn-apple-silicon\", new()\n    {\n        Name = \"pn-apple-silicon\",\n        VpcId = vpc_apple_silicon.Id,\n    });\n\n    var my_server = new Scaleway.Applesilicon.Server(\"my-server\", new()\n    {\n        Name = \"TestAccServerEnableVPC\",\n        Type = \"M2-M\",\n        EnableVpc = true,\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Applesilicon.Inputs.ServerPrivateNetworkArgs\n            {\n                Id = pn_apple_silicon.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc_apple_silicon, err := network.NewVpc(ctx, \"vpc-apple-silicon\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"vpc-apple-silicon\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn_apple_silicon, err := network.NewPrivateNetwork(ctx, \"pn-apple-silicon\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:  pulumi.String(\"pn-apple-silicon\"),\n\t\t\tVpcId: vpc_apple_silicon.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applesilicon.NewServer(ctx, \"my-server\", \u0026applesilicon.ServerArgs{\n\t\t\tName:      pulumi.String(\"TestAccServerEnableVPC\"),\n\t\t\tType:      pulumi.String(\"M2-M\"),\n\t\t\tEnableVpc: pulumi.Bool(true),\n\t\t\tPrivateNetworks: applesilicon.ServerPrivateNetworkArray{\n\t\t\t\t\u0026applesilicon.ServerPrivateNetworkArgs{\n\t\t\t\t\tId: pn_apple_silicon.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport com.pulumi.scaleway.applesilicon.inputs.ServerPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc_apple_silicon = new Vpc(\"vpc-apple-silicon\", VpcArgs.builder()\n            .name(\"vpc-apple-silicon\")\n            .build());\n\n        var pn_apple_silicon = new PrivateNetwork(\"pn-apple-silicon\", PrivateNetworkArgs.builder()\n            .name(\"pn-apple-silicon\")\n            .vpcId(vpc_apple_silicon.id())\n            .build());\n\n        var my_server = new Server(\"my-server\", ServerArgs.builder()\n            .name(\"TestAccServerEnableVPC\")\n            .type(\"M2-M\")\n            .enableVpc(true)\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .id(pn_apple_silicon.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc-apple-silicon:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc-apple-silicon\n  pn-apple-silicon:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: pn-apple-silicon\n      vpcId: ${[\"vpc-apple-silicon\"].id}\n  my-server:\n    type: scaleway:applesilicon:Server\n    properties:\n      name: TestAccServerEnableVPC\n      type: M2-M\n      enableVpc: true\n      privateNetworks:\n        - id: ${[\"pn-apple-silicon\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e runner\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst byName = scaleway.applesilicon.getOs({\n    name: \"devos-sequoia-15.6\",\n});\nconst main = new scaleway.applesilicon.Runner(\"main\", {\n    name: \"TestAccRunnerGithub\",\n    ciProvider: \"github\",\n    url: \"https://github.com/my-repo-url\",\n    token: \"MY_GITHUB_RUNNER_TOKEN\",\n});\nconst mainServer = new scaleway.applesilicon.Server(\"main\", {\n    name: \"TestAccServerRunner\",\n    type: \"M2-L\",\n    publicBandwidth: 1000000000,\n    osId: byName.then(byName =\u003e byName.id),\n    runnerIds: [main.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nby_name = scaleway.applesilicon.get_os(name=\"devos-sequoia-15.6\")\nmain = scaleway.applesilicon.Runner(\"main\",\n    name=\"TestAccRunnerGithub\",\n    ci_provider=\"github\",\n    url=\"https://github.com/my-repo-url\",\n    token=\"MY_GITHUB_RUNNER_TOKEN\")\nmain_server = scaleway.applesilicon.Server(\"main\",\n    name=\"TestAccServerRunner\",\n    type=\"M2-L\",\n    public_bandwidth=1000000000,\n    os_id=by_name.id,\n    runner_ids=[main.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byName = Scaleway.Applesilicon.GetOs.Invoke(new()\n    {\n        Name = \"devos-sequoia-15.6\",\n    });\n\n    var main = new Scaleway.Applesilicon.Runner(\"main\", new()\n    {\n        Name = \"TestAccRunnerGithub\",\n        CiProvider = \"github\",\n        Url = \"https://github.com/my-repo-url\",\n        Token = \"MY_GITHUB_RUNNER_TOKEN\",\n    });\n\n    var mainServer = new Scaleway.Applesilicon.Server(\"main\", new()\n    {\n        Name = \"TestAccServerRunner\",\n        Type = \"M2-L\",\n        PublicBandwidth = 1000000000,\n        OsId = byName.Apply(getOsResult =\u003e getOsResult.Id),\n        RunnerIds = new[]\n        {\n            main.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/applesilicon\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbyName, err := applesilicon.GetOs(ctx, \u0026applesilicon.GetOsArgs{\n\t\t\tName: pulumi.StringRef(\"devos-sequoia-15.6\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := applesilicon.NewRunner(ctx, \"main\", \u0026applesilicon.RunnerArgs{\n\t\t\tName:       pulumi.String(\"TestAccRunnerGithub\"),\n\t\t\tCiProvider: pulumi.String(\"github\"),\n\t\t\tUrl:        pulumi.String(\"https://github.com/my-repo-url\"),\n\t\t\tToken:      pulumi.String(\"MY_GITHUB_RUNNER_TOKEN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applesilicon.NewServer(ctx, \"main\", \u0026applesilicon.ServerArgs{\n\t\t\tName:            pulumi.String(\"TestAccServerRunner\"),\n\t\t\tType:            pulumi.String(\"M2-L\"),\n\t\t\tPublicBandwidth: pulumi.Int(1000000000),\n\t\t\tOsId:            pulumi.String(pulumi.String(byName.Id)),\n\t\t\tRunnerIds: pulumi.StringArray{\n\t\t\t\tmain.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.scaleway.applesilicon.ApplesiliconFunctions;\nimport com.pulumi.scaleway.applesilicon.inputs.GetOsArgs;\nimport com.pulumi.scaleway.applesilicon.Runner;\nimport com.pulumi.scaleway.applesilicon.RunnerArgs;\nimport com.pulumi.scaleway.applesilicon.Server;\nimport com.pulumi.scaleway.applesilicon.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 byName = ApplesiliconFunctions.getOs(GetOsArgs.builder()\n            .name(\"devos-sequoia-15.6\")\n            .build());\n\n        var main = new Runner(\"main\", RunnerArgs.builder()\n            .name(\"TestAccRunnerGithub\")\n            .ciProvider(\"github\")\n            .url(\"https://github.com/my-repo-url\")\n            .token(\"MY_GITHUB_RUNNER_TOKEN\")\n            .build());\n\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .name(\"TestAccServerRunner\")\n            .type(\"M2-L\")\n            .publicBandwidth(1000000000)\n            .osId(byName.id())\n            .runnerIds(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:applesilicon:Runner\n    properties:\n      name: TestAccRunnerGithub\n      ciProvider: github\n      url: https://github.com/my-repo-url\n      token: MY_GITHUB_RUNNER_TOKEN\n  mainServer:\n    type: scaleway:applesilicon:Server\n    name: main\n    properties:\n      name: TestAccServerRunner\n      type: M2-L\n      publicBandwidth: 1e+09\n      osId: ${byName.id}\n      runnerIds:\n        - ${main.id}\nvariables:\n  byName:\n    fn::invoke:\n      function: scaleway:applesilicon:getOs\n      arguments:\n        name: devos-sequoia-15.6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/appleSiliconServer:AppleSiliconServer main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "commitment": {
                    "type": "string",
                    "description": "The commitment period of the server"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the private network was created.\n"
                },
                "deletableAt": {
                    "type": "string",
                    "description": "The minimal date and time on which you can delete this server due to Apple licence"
                },
                "enableVpc": {
                    "type": "boolean",
                    "description": ": Enables the VPC option when set to true.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "IPv4 address of the server (IPv4 address).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "osId": {
                    "type": "string",
                    "description": "The ID of the OS to use for the server.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password of the server",
                    "secret": true
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateIp:AppleSiliconServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateNetwork:AppleSiliconServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n"
                },
                "publicBandwidth": {
                    "type": "integer",
                    "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                },
                "runnerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the private network was last updated.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the server"
                },
                "vncUrl": {
                    "type": "string",
                    "description": "URL of the VNC.\n"
                },
                "vpcStatus": {
                    "type": "string",
                    "description": "The current status of the VPC option.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "deletableAt",
                "ip",
                "name",
                "organizationId",
                "password",
                "privateIps",
                "projectId",
                "publicBandwidth",
                "runnerIds",
                "state",
                "type",
                "updatedAt",
                "username",
                "vncUrl",
                "vpcStatus"
            ],
            "inputProperties": {
                "commitment": {
                    "type": "string",
                    "description": "The commitment period of the server"
                },
                "enableVpc": {
                    "type": "boolean",
                    "description": ": Enables the VPC option when set to true.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "osId": {
                    "type": "string",
                    "description": "The ID of the OS to use for the server.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateIp:AppleSiliconServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateNetwork:AppleSiliconServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicBandwidth": {
                    "type": "integer",
                    "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                },
                "runnerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AppleSiliconServer resources.\n",
                "properties": {
                    "commitment": {
                        "type": "string",
                        "description": "The commitment period of the server"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the private network was created.\n"
                    },
                    "deletableAt": {
                        "type": "string",
                        "description": "The minimal date and time on which you can delete this server due to Apple licence"
                    },
                    "enableVpc": {
                        "type": "boolean",
                        "description": ": Enables the VPC option when set to true.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "IPv4 address of the server (IPv4 address).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "osId": {
                        "type": "string",
                        "description": "The ID of the OS to use for the server.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "The password of the server",
                        "secret": true
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateIp:AppleSiliconServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the server.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/AppleSiliconServerPrivateNetwork:AppleSiliconServerPrivateNetwork"
                        },
                        "description": "The private networks to attach to the server\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicBandwidth": {
                        "type": "integer",
                        "description": "Configure the available public bandwidth for your server in bits per second. This option may not be available for all offers.\n"
                    },
                    "runnerIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of runner IDs to assign to the server. At the moment, only a single runner can be attached to a server. Compatible only with runners of type \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, with the `devos-sequoia-15.6` offer and `M2-L` server type\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the server.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The commercial type of the server. You find all the available types on\nthe [pricing page](https://www.scaleway.com/en/pricing/apple-silicon/). Updates to this field will recreate a new\nresource.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the private network was last updated.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The username of the server"
                    },
                    "vncUrl": {
                        "type": "string",
                        "description": "URL of the VNC.\n"
                    },
                    "vpcStatus": {
                        "type": "string",
                        "description": "The current status of the VPC option.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/applesiliconserver.AppleSiliconServer has been deprecated in favor of scaleway.applesilicon/server.Server"
        },
        "scaleway:index/baremetalServer:BaremetalServer": {
            "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.id}\n      sshKeyIds:\n        - ${mySshKey.id}\nvariables:\n  ### Basic\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I220E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\n//## With cloud-init\nconst mySshKey = scaleway.iam.getSshKey({\n    name: \"main\",\n});\nconst myOs = scaleway.elasticmetal.getOs({\n    zone: \"fr-par-1\",\n    name: \"Ubuntu\",\n    version: \"22.04 LTS (Jammy Jellyfish)\",\n});\nconst myOffer = scaleway.elasticmetal.getOffer({\n    zone: \"fr-par-2\",\n    name: \"EM-I220E-NVME\",\n});\nconst myServerCi = new scaleway.elasticmetal.Server(\"my_server_ci\", {\n    zone: \"fr-par-2\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    os: myOs.then(myOs =\u003e myOs.osId),\n    sshKeyIds: [mySshKey.then(mySshKey =\u003e mySshKey.id)],\n    cloudInit: std.file({\n        input: \"userdata.yaml\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\n### With cloud-init\nmy_ssh_key = scaleway.iam.get_ssh_key(name=\"main\")\nmy_os = scaleway.elasticmetal.get_os(zone=\"fr-par-1\",\n    name=\"Ubuntu\",\n    version=\"22.04 LTS (Jammy Jellyfish)\")\nmy_offer = scaleway.elasticmetal.get_offer(zone=\"fr-par-2\",\n    name=\"EM-I220E-NVME\")\nmy_server_ci = scaleway.elasticmetal.Server(\"my_server_ci\",\n    zone=\"fr-par-2\",\n    offer=my_offer.offer_id,\n    os=my_os.os_id,\n    ssh_key_ids=[my_ssh_key.id],\n    cloud_init=std.file(input=\"userdata.yaml\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## With cloud-init\n    var mySshKey = Scaleway.Iam.GetSshKey.Invoke(new()\n    {\n        Name = \"main\",\n    });\n\n    var myOs = Scaleway.Elasticmetal.GetOs.Invoke(new()\n    {\n        Zone = \"fr-par-1\",\n        Name = \"Ubuntu\",\n        Version = \"22.04 LTS (Jammy Jellyfish)\",\n    });\n\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"EM-I220E-NVME\",\n    });\n\n    var myServerCi = new Scaleway.Elasticmetal.Server(\"my_server_ci\", new()\n    {\n        Zone = \"fr-par-2\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Os = myOs.Apply(getOsResult =\u003e getOsResult.OsId),\n        SshKeyIds = new[]\n        {\n            mySshKey.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n        CloudInit = Std.File.Invoke(new()\n        {\n            Input = \"userdata.yaml\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## With cloud-init\n\t\tmySshKey, err := iam.LookupSshKey(ctx, \u0026iam.LookupSshKeyArgs{\n\t\t\tName: pulumi.StringRef(\"main\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOs, err := elasticmetal.GetOs(ctx, \u0026elasticmetal.GetOsArgs{\n\t\t\tZone:    pulumi.StringRef(\"fr-par-1\"),\n\t\t\tName:    pulumi.StringRef(\"Ubuntu\"),\n\t\t\tVersion: pulumi.StringRef(\"22.04 LTS (Jammy Jellyfish)\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"EM-I220E-NVME\"),\n\t\t}, nil)\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\": \"userdata.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewServer(ctx, \"my_server_ci\", \u0026elasticmetal.ServerArgs{\n\t\t\tZone:  pulumi.String(\"fr-par-2\"),\n\t\t\tOffer: pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tOs:    pulumi.String(pulumi.String(myOs.OsId)),\n\t\t\tSshKeyIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(pulumi.String(mySshKey.Id)),\n\t\t\t},\n\t\t\tCloudInit: invokeFile.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.scaleway.iam.IamFunctions;\nimport com.pulumi.scaleway.iam.inputs.GetSshKeyArgs;\nimport com.pulumi.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOsArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## With cloud-init\n        final var mySshKey = IamFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"main\")\n            .build());\n\n        final var myOs = ElasticmetalFunctions.getOs(GetOsArgs.builder()\n            .zone(\"fr-par-1\")\n            .name(\"Ubuntu\")\n            .version(\"22.04 LTS (Jammy Jellyfish)\")\n            .build());\n\n        final var myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"EM-I220E-NVME\")\n            .build());\n\n        var myServerCi = new Server(\"myServerCi\", ServerArgs.builder()\n            .zone(\"fr-par-2\")\n            .offer(myOffer.offerId())\n            .os(myOs.osId())\n            .sshKeyIds(mySshKey.id())\n            .cloudInit(StdFunctions.file(Map.of(\"input\", \"userdata.yaml\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myServerCi:\n    type: scaleway:elasticmetal:Server\n    name: my_server_ci\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      sshKeyIds:\n        - ${mySshKey.id}\n      cloudInit:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: userdata.yaml\n          return: result\nvariables:\n  ### With cloud-init\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-1\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I220E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      partitioning: |\n        {\n          \\\"disks\\\": [\n            {\n              \\\"device\\\": \\\"/dev/nvme0n1\\\",\n              \\\"partitions\\\": [\n                {\n                  \\\"label\\\": \\\"uefi\\\",\n                  \\\"number\\\": 1,\n                  \\\"size\\\": 536870912\n                },\n                {\n                  \\\"label\\\": \\\"swap\\\",\n                  \\\"number\\\": 2,\n                  \\\"size\\\": 4294967296\n                },\n                {\n                  \\\"label\\\": \\\"boot\\\",\n                  \\\"number\\\": 3,\n                  \\\"size\\\": 1073741824\n                },\n                {\n                  \\\"label\\\": \\\"root\\\",\n                  \\\"number\\\": 4,\n                  \\\"size\\\": 1017827045376\n                }\n              ]\n            },\n            {\n              \\\"device\\\": \\\"/dev/nvme1n1\\\",\n              \\\"partitions\\\": [\n                {\n                  \\\"label\\\": \\\"swap\\\",\n                  \\\"number\\\": 1,\n                  \\\"size\\\": 4294967296\n                },\n                {\n                  \\\"label\\\": \\\"boot\\\",\n                  \\\"number\\\": 2,\n                  \\\"size\\\": 1073741824\n                },\n                {\n                  \\\"label\\\": \\\"root\\\",\n                  \\\"number\\\": 3,\n                  \\\"size\\\": 1017827045376\n                }\n              ]\n            }\n          ],\n          \\\"filesystems\\\": [\n            {\n              \\\"device\\\": \\\"/dev/nvme0n1p1\\\",\n              \\\"format\\\": \\\"fat32\\\",\n              \\\"mountpoint\\\": \\\"/boot/efi\\\"\n            },\n            {\n              \\\"device\\\": \\\"/dev/md0\\\",\n              \\\"format\\\": \\\"ext4\\\",\n              \\\"mountpoint\\\": \\\"/boot\\\"\n            },\n            {\n              \\\"device\\\": \\\"/dev/md1\\\",\n              \\\"format\\\": \\\"ext4\\\",\n              \\\"mountpoint\\\": \\\"/\\\"\n            }\n          ],\n          \\\"raids\\\": [\n            {\n              \\\"devices\\\": [\\\"/dev/nvme0n1p3\\\", \\\"/dev/nvme1n1p2\\\"],\n              \\\"level\\\": \\\"raid_level_1\\\",\n              \\\"name\\\": \\\"/dev/md0\\\"\n            },\n            {\n              \\\"devices\\\": [\\\"/dev/nvme0n1p4\\\", \\\"/dev/nvme1n1p3\\\"],\n              \\\"level\\\": \\\"raid_level_1\\\",\n              \\\"name\\\": \\\"/dev/md1\\\"\n            }\n          ],\n          \\\"zfs\\\": {\n            \\\"pools\\\": []\n          }\n        }\n      sshKeyIds:\n        - ${mySshKey.id}\nvariables:\n  ### With custom partitioning\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-I215E-NVME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  ### With IPAM IP IDs\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc_baremetal\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_baremetal\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.64.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      sshKeyIds:\n        - ${mySshKey.id}\n      options:\n        - id: ${privateNetwork.optionId}\n      privateNetworks:\n        - id: ${pn01.id}\n          ipamIpIds:\n            - ${ip01.id}\nvariables:\n  mySshKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n        publicKey: ssh XXXXXXXXXXX\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-1\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-1\n        name: EM-A115X-SSD\n  privateNetwork:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOption\n      arguments:\n        zone: fr-par-1\n        name: Private Network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBaremetal servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/baremetalServer:BaremetalServer web fr-par-2/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the server.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "The domain of the server.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of the server.\n"
                },
                "installConfigAfterward": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                },
                "ips": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerIp:BaremetalServerIp"
                    },
                    "description": "(List of) The IPs of the server.\n"
                },
                "ipv4s": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerIpv4:BaremetalServerIpv4"
                    },
                    "description": "(List of) The IPv4 addresses of the server.\n"
                },
                "ipv6s": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerIpv6:BaremetalServerIpv6"
                    },
                    "description": "(List of) The IPv6 addresses of the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "offer": {
                    "type": "string",
                    "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the offer.\n"
                },
                "offerName": {
                    "type": "string",
                    "description": "The name of the offer.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerOption:BaremetalServerOption"
                    },
                    "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "os": {
                    "type": "string",
                    "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                },
                "osName": {
                    "type": "string",
                    "description": "The name of the os.\n"
                },
                "partitioning": {
                    "type": "string",
                    "description": "The partitioning schema in JSON format\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerPrivateIp:BaremetalServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerPrivateNetwork:BaremetalServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "reinstallOnConfigChanges": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                },
                "servicePassword": {
                    "type": "string",
                    "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                    "secret": true
                },
                "servicePasswordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                    "secret": true
                },
                "servicePasswordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                },
                "serviceUser": {
                    "type": "string",
                    "description": "User used for the service to install.\n"
                },
                "sshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of SSH keys allowed to connect to the server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "user": {
                    "type": "string",
                    "description": "User used for the installation.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n"
                }
            },
            "required": [
                "cloudInit",
                "domain",
                "ips",
                "ipv4s",
                "ipv6s",
                "name",
                "offer",
                "offerId",
                "offerName",
                "organizationId",
                "osName",
                "privateIps",
                "projectId",
                "serviceUser",
                "tags",
                "user"
            ],
            "inputProperties": {
                "cloudInit": {
                    "type": "string",
                    "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the server.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of the server.\n"
                },
                "installConfigAfterward": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "offer": {
                    "type": "string",
                    "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerOption:BaremetalServerOption"
                    },
                    "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                },
                "os": {
                    "type": "string",
                    "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                },
                "partitioning": {
                    "type": "string",
                    "description": "The partitioning schema in JSON format\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerPrivateIp:BaremetalServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/BaremetalServerPrivateNetwork:BaremetalServerPrivateNetwork"
                    },
                    "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "reinstallOnConfigChanges": {
                    "type": "boolean",
                    "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                },
                "servicePassword": {
                    "type": "string",
                    "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                    "secret": true
                },
                "servicePasswordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                    "secret": true
                },
                "servicePasswordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                },
                "serviceUser": {
                    "type": "string",
                    "description": "User used for the service to install.\n"
                },
                "sshKeyIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of SSH keys allowed to connect to the server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "user": {
                    "type": "string",
                    "description": "User used for the installation.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "offer"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BaremetalServer resources.\n",
                "properties": {
                    "cloudInit": {
                        "type": "string",
                        "description": "Configuration data to pass to cloud-init such as a YAML cloud config or a user-data script. Accepts either a string containing the content or a path to a file (for example `file(\"cloud-init.yml\")`). Max length: 127998 characters. Updates to \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 will update the server user-data via the API and do not trigger a reinstall; however, a reboot of the server is required for the OS to re-run cloud-init and apply the changes. Only supported for Offers that have cloud-init enabled. You can check available offers with `scw baremetal list offers` command.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description for the server.\n"
                    },
                    "domain": {
                        "type": "string",
                        "description": "The domain of the server.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname of the server.\n"
                    },
                    "installConfigAfterward": {
                        "type": "boolean",
                        "description": "If True, this boolean allows to create a server without the install config if you want to provide it later.\n"
                    },
                    "ips": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerIp:BaremetalServerIp"
                        },
                        "description": "(List of) The IPs of the server.\n"
                    },
                    "ipv4s": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerIpv4:BaremetalServerIpv4"
                        },
                        "description": "(List of) The IPv4 addresses of the server.\n"
                    },
                    "ipv6s": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerIpv6:BaremetalServerIpv6"
                        },
                        "description": "(List of) The IPv6 addresses of the server.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "offer": {
                        "type": "string",
                        "description": "The offer UUID of the baremetal server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-servers-get-a-specific-elastic-metal-server) to find the right offer.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`offer`\" pulumi-lang-dotnet=\"`Offer`\" pulumi-lang-go=\"`offer`\" pulumi-lang-python=\"`offer`\" pulumi-lang-yaml=\"`offer`\" pulumi-lang-java=\"`offer`\"\u003e`offer`\u003c/span\u003e will recreate the server.\n\u003e **Important**  If you migrate to a monthly subscription, you cannot downgrade back to an hourly plan. Ensure that the monthly plan meets your needs before making the switch.\n"
                    },
                    "offerId": {
                        "type": "string",
                        "description": "The ID of the offer.\n"
                    },
                    "offerName": {
                        "type": "string",
                        "description": "The name of the offer.\n"
                    },
                    "options": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerOption:BaremetalServerOption"
                        },
                        "description": "The options to enable on the server.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`options`\" pulumi-lang-dotnet=\"`Options`\" pulumi-lang-go=\"`options`\" pulumi-lang-python=\"`options`\" pulumi-lang-yaml=\"`options`\" pulumi-lang-java=\"`options`\"\u003e`options`\u003c/span\u003e block supports:\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "os": {
                        "type": "string",
                        "description": "The UUID of the os to install on the server.\nUse [this endpoint](https://www.scaleway.com/en/developers/api/elastic-metal/#path-os-list-available-oses) to find the right OS ID.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`os`\" pulumi-lang-dotnet=\"`Os`\" pulumi-lang-go=\"`os`\" pulumi-lang-python=\"`os`\" pulumi-lang-yaml=\"`os`\" pulumi-lang-java=\"`os`\"\u003e`os`\u003c/span\u003e will reinstall the server.\n"
                    },
                    "osName": {
                        "type": "string",
                        "description": "The name of the os.\n"
                    },
                    "partitioning": {
                        "type": "string",
                        "description": "The partitioning schema in JSON format\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password used for the installation. May be required depending on used os. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword used for the installation in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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. May be required depending on used os.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerPrivateIp:BaremetalServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/BaremetalServerPrivateNetwork:BaremetalServerPrivateNetwork"
                        },
                        "description": "The private networks to attach to the server. For more information, see [the documentation](https://www.scaleway.com/en/docs/compute/elastic-metal/how-to/use-private-networks/)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Set to true to activate server protection option.\n"
                    },
                    "reinstallOnConfigChanges": {
                        "type": "boolean",
                        "description": "If True, this boolean allows to reinstall the server on install config changes.\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`sshKeyIds`\" pulumi-lang-dotnet=\"`SshKeyIds`\" pulumi-lang-go=\"`sshKeyIds`\" pulumi-lang-python=\"`ssh_key_ids`\" pulumi-lang-yaml=\"`sshKeyIds`\" pulumi-lang-java=\"`sshKeyIds`\"\u003e`sshKeyIds`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`serviceUser`\" pulumi-lang-dotnet=\"`ServiceUser`\" pulumi-lang-go=\"`serviceUser`\" pulumi-lang-python=\"`service_user`\" pulumi-lang-yaml=\"`serviceUser`\" pulumi-lang-java=\"`serviceUser`\"\u003e`serviceUser`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e will not take effect on the server, it requires to reinstall it. To do so please set 'reinstall_on_config_changes' argument to true.\n"
                    },
                    "servicePassword": {
                        "type": "string",
                        "description": "Password used for the service to install. May be required depending on used os. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified.\n",
                        "secret": true
                    },
                    "servicePasswordWo": {
                        "type": "string",
                        "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nPassword used for the service to install in write-only mode. Only one of \u003cspan pulumi-lang-nodejs=\"`servicePassword`\" pulumi-lang-dotnet=\"`ServicePassword`\" pulumi-lang-go=\"`servicePassword`\" pulumi-lang-python=\"`service_password`\" pulumi-lang-yaml=\"`servicePassword`\" pulumi-lang-java=\"`servicePassword`\"\u003e`servicePassword`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e should be specified. \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e will not be set in the Terraform state. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e. May be required depending on used os.\n",
                        "secret": true
                    },
                    "servicePasswordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only service password. To update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWo`\" pulumi-lang-dotnet=\"`ServicePasswordWo`\" pulumi-lang-go=\"`servicePasswordWo`\" pulumi-lang-python=\"`service_password_wo`\" pulumi-lang-yaml=\"`servicePasswordWo`\" pulumi-lang-java=\"`servicePasswordWo`\"\u003e`servicePasswordWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`servicePasswordWoVersion`\" pulumi-lang-dotnet=\"`ServicePasswordWoVersion`\" pulumi-lang-go=\"`servicePasswordWoVersion`\" pulumi-lang-python=\"`service_password_wo_version`\" pulumi-lang-yaml=\"`servicePasswordWoVersion`\" pulumi-lang-java=\"`servicePasswordWoVersion`\"\u003e`servicePasswordWoVersion`\u003c/span\u003e.\n"
                    },
                    "serviceUser": {
                        "type": "string",
                        "description": "User used for the service to install.\n"
                    },
                    "sshKeyIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of SSH keys allowed to connect to the server.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the server.\n"
                    },
                    "user": {
                        "type": "string",
                        "description": "User used for the installation.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/baremetalserver.BaremetalServer has been deprecated in favor of scaleway.elasticmetal/server.Server"
        },
        "scaleway:index/blockSnapshot:BlockSnapshot": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.block.Snapshot`\" pulumi-lang-dotnet=\"`scaleway.block.Snapshot`\" pulumi-lang-go=\"`block.Snapshot`\" pulumi-lang-python=\"`block.Snapshot`\" pulumi-lang-yaml=\"`scaleway.block.Snapshot`\" pulumi-lang-java=\"`scaleway.block.Snapshot`\"\u003e`scaleway.block.Snapshot`\u003c/span\u003e resource is used to create and manage snapshots of Block Storage volumes.\n\nRefer to the Block Storage [product documentation](https://www.scaleway.com/en/docs/block-storage/) and [API documentation](https://www.scaleway.com/en/developers/api/block/) for more information.\n\n## Example Usage\n\n### Create a snapshot of a Block Storage volume\n\nThe following command allows you to create a snapshot (`some-snapshot-name`) from a Block Storage volume specified by its ID.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst blockVolume = new scaleway.block.Volume(\"block_volume\", {\n    iops: 5000,\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\nconst blockSnapshot = new scaleway.block.Snapshot(\"block_snapshot\", {\n    name: \"some-snapshot-name\",\n    volumeId: blockVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nblock_volume = scaleway.block.Volume(\"block_volume\",\n    iops=5000,\n    name=\"some-volume-name\",\n    size_in_gb=20)\nblock_snapshot = scaleway.block.Snapshot(\"block_snapshot\",\n    name=\"some-snapshot-name\",\n    volume_id=block_volume.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var blockVolume = new Scaleway.Block.Volume(\"block_volume\", new()\n    {\n        Iops = 5000,\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n    var blockSnapshot = new Scaleway.Block.Snapshot(\"block_snapshot\", new()\n    {\n        Name = \"some-snapshot-name\",\n        VolumeId = blockVolume.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tblockVolume, err := block.NewVolume(ctx, \"block_volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewSnapshot(ctx, \"block_snapshot\", \u0026block.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"some-snapshot-name\"),\n\t\t\tVolumeId: blockVolume.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.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.block.Snapshot;\nimport com.pulumi.scaleway.block.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 blockVolume = new Volume(\"blockVolume\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n        var blockSnapshot = new Snapshot(\"blockSnapshot\", SnapshotArgs.builder()\n            .name(\"some-snapshot-name\")\n            .volumeId(blockVolume.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  blockVolume:\n    type: scaleway:block:Volume\n    name: block_volume\n    properties:\n      iops: 5000\n      name: some-volume-name\n      sizeInGb: 20\n  blockSnapshot:\n    type: scaleway:block:Snapshot\n    name: block_snapshot\n    properties:\n      name: some-snapshot-name\n      volumeId: ${blockVolume.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### How to import from Object Storage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst my_import_bucket = new scaleway.object.Bucket(\"my-import-bucket\", {name: \"snapshot-bucket-to-import\"});\nconst qcow_object = new scaleway.object.Item(\"qcow-object\", {\n    bucket: snapshot_bucket.name,\n    key: \"my-snapshot.qcow2\",\n    file: \"imported-snapshot/snapshot.qcow2\",\n});\nconst imported = new scaleway.block.Volume(\"imported\", {\n    iops: 5000,\n    name: \"imported-from-qcow\",\n    \"import\": [{\n        bucket: \"my-import-bucket\",\n        key: \"imported-snapshot/snapshot.qcow2\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmy_import_bucket = scaleway.object.Bucket(\"my-import-bucket\", name=\"snapshot-bucket-to-import\")\nqcow_object = scaleway.object.Item(\"qcow-object\",\n    bucket=snapshot_bucket[\"name\"],\n    key=\"my-snapshot.qcow2\",\n    file=\"imported-snapshot/snapshot.qcow2\")\nimported = scaleway.block.Volume(\"imported\",\n    iops=5000,\n    name=\"imported-from-qcow\",\n    import_=[{\n        \"bucket\": \"my-import-bucket\",\n        \"key\": \"imported-snapshot/snapshot.qcow2\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_import_bucket = new Scaleway.Object.Bucket(\"my-import-bucket\", new()\n    {\n        Name = \"snapshot-bucket-to-import\",\n    });\n\n    var qcow_object = new Scaleway.Object.Item(\"qcow-object\", new()\n    {\n        Bucket = snapshot_bucket.Name,\n        Key = \"my-snapshot.qcow2\",\n        File = \"imported-snapshot/snapshot.qcow2\",\n    });\n\n    var imported = new Scaleway.Block.Volume(\"imported\", new()\n    {\n        Iops = 5000,\n        Name = \"imported-from-qcow\",\n        Import = new[]\n        {\n            \n            {\n                { \"bucket\", \"my-import-bucket\" },\n                { \"key\", \"imported-snapshot/snapshot.qcow2\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"my-import-bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-bucket-to-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"qcow-object\", \u0026object.ItemArgs{\n\t\t\tBucket: pulumi.Any(snapshot_bucket.Name),\n\t\t\tKey:    pulumi.String(\"my-snapshot.qcow2\"),\n\t\t\tFile:   pulumi.String(\"imported-snapshot/snapshot.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"imported\", \u0026block.VolumeArgs{\n\t\t\tIops: pulumi.Int(5000),\n\t\t\tName: pulumi.String(\"imported-from-qcow\"),\n\t\t\tImport: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bucket\": \"my-import-bucket\",\n\t\t\t\t\t\"key\":    \"imported-snapshot/snapshot.qcow2\",\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_import_bucket = new Bucket(\"my-import-bucket\", BucketArgs.builder()\n            .name(\"snapshot-bucket-to-import\")\n            .build());\n\n        var qcow_object = new Item(\"qcow-object\", ItemArgs.builder()\n            .bucket(snapshot_bucket.name())\n            .key(\"my-snapshot.qcow2\")\n            .file(\"imported-snapshot/snapshot.qcow2\")\n            .build());\n\n        var imported = new Volume(\"imported\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"imported-from-qcow\")\n            .import_(Arrays.asList(Map.ofEntries(\n                Map.entry(\"bucket\", \"my-import-bucket\"),\n                Map.entry(\"key\", \"imported-snapshot/snapshot.qcow2\")\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-import-bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-bucket-to-import\n  qcow-object:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${[\"snapshot-bucket\"].name}\n      key: my-snapshot.qcow2\n      file: imported-snapshot/snapshot.qcow2\n  imported:\n    type: scaleway:block:Volume\n    properties:\n      iops: 5000\n      name: imported-from-qcow\n      import:\n        - bucket: my-import-bucket\n          key: imported-snapshot/snapshot.qcow2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### How to export to Object Storage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst my_import_bucket = new scaleway.object.Bucket(\"my-import-bucket\", {name: \"snapshot-bucket-to-import\"});\nconst qcow_object = new scaleway.object.Item(\"qcow-object\", {\n    bucket: snapshot_bucket.name,\n    key: \"export/my-snapshot.qcow2\",\n});\nconst toExport = new scaleway.block.Volume(\"to_export\", {\n    iops: 5000,\n    name: \"to-export\",\n    \"export\": [{\n        bucket: \"snapshot-bucket-to-import\",\n        key: \"exports/my-snapshot.qcow2\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmy_import_bucket = scaleway.object.Bucket(\"my-import-bucket\", name=\"snapshot-bucket-to-import\")\nqcow_object = scaleway.object.Item(\"qcow-object\",\n    bucket=snapshot_bucket[\"name\"],\n    key=\"export/my-snapshot.qcow2\")\nto_export = scaleway.block.Volume(\"to_export\",\n    iops=5000,\n    name=\"to-export\",\n    export=[{\n        \"bucket\": \"snapshot-bucket-to-import\",\n        \"key\": \"exports/my-snapshot.qcow2\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_import_bucket = new Scaleway.Object.Bucket(\"my-import-bucket\", new()\n    {\n        Name = \"snapshot-bucket-to-import\",\n    });\n\n    var qcow_object = new Scaleway.Object.Item(\"qcow-object\", new()\n    {\n        Bucket = snapshot_bucket.Name,\n        Key = \"export/my-snapshot.qcow2\",\n    });\n\n    var toExport = new Scaleway.Block.Volume(\"to_export\", new()\n    {\n        Iops = 5000,\n        Name = \"to-export\",\n        Export = new[]\n        {\n            \n            {\n                { \"bucket\", \"snapshot-bucket-to-import\" },\n                { \"key\", \"exports/my-snapshot.qcow2\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"my-import-bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-bucket-to-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"qcow-object\", \u0026object.ItemArgs{\n\t\t\tBucket: pulumi.Any(snapshot_bucket.Name),\n\t\t\tKey:    pulumi.String(\"export/my-snapshot.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"to_export\", \u0026block.VolumeArgs{\n\t\t\tIops: pulumi.Int(5000),\n\t\t\tName: pulumi.String(\"to-export\"),\n\t\t\tExport: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bucket\": \"snapshot-bucket-to-import\",\n\t\t\t\t\t\"key\":    \"exports/my-snapshot.qcow2\",\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_import_bucket = new Bucket(\"my-import-bucket\", BucketArgs.builder()\n            .name(\"snapshot-bucket-to-import\")\n            .build());\n\n        var qcow_object = new Item(\"qcow-object\", ItemArgs.builder()\n            .bucket(snapshot_bucket.name())\n            .key(\"export/my-snapshot.qcow2\")\n            .build());\n\n        var toExport = new Volume(\"toExport\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"to-export\")\n            .export(Arrays.asList(Map.ofEntries(\n                Map.entry(\"bucket\", \"snapshot-bucket-to-import\"),\n                Map.entry(\"key\", \"exports/my-snapshot.qcow2\")\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-import-bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-bucket-to-import\n  qcow-object:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${[\"snapshot-bucket\"].name}\n      key: export/my-snapshot.qcow2\n  toExport:\n    type: scaleway:block:Volume\n    name: to_export\n    properties:\n      iops: 5000\n      name: to-export\n      export:\n        - bucket: snapshot-bucket-to-import\n          key: exports/my-snapshot.qcow2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import the snapshot of a Block Storage volume using the zoned ID format (`{zone}/{id}`).\n\n```sh\n$ pulumi import scaleway:index/blockSnapshot:BlockSnapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "export": {
                    "$ref": "#/types/scaleway:index/BlockSnapshotExport:BlockSnapshotExport",
                    "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:index/BlockSnapshotImport:BlockSnapshotImport",
                    "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Scaleway Project the snapshot is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the snapshot should be created.\n"
                }
            },
            "required": [
                "name",
                "projectId"
            ],
            "inputProperties": {
                "export": {
                    "$ref": "#/types/scaleway:index/BlockSnapshotExport:BlockSnapshotExport",
                    "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:index/BlockSnapshotImport:BlockSnapshotImport",
                    "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Scaleway Project the snapshot is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the snapshot should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BlockSnapshot resources.\n",
                "properties": {
                    "export": {
                        "$ref": "#/types/scaleway:index/BlockSnapshotExport:BlockSnapshotExport",
                        "description": "Use this block to export the volume as a QCOW file to Object Storage.\n"
                    },
                    "import": {
                        "$ref": "#/types/scaleway:index/BlockSnapshotImport:BlockSnapshotImport",
                        "description": "Use this block to import a QCOW image from Object Storage to create a volume.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot. If not provided, a name will be randomly generated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "). The ID of the Scaleway Project the snapshot is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the snapshot.\n"
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "The ID of the volume to take a snapshot from.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "). The zone in which the snapshot should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/blocksnapshot.BlockSnapshot has been deprecated in favor of scaleway.block/snapshot.Snapshot"
        },
        "scaleway:index/blockVolume:BlockVolume": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.block.Volume`\" pulumi-lang-dotnet=\"`scaleway.block.Volume`\" pulumi-lang-go=\"`block.Volume`\" pulumi-lang-python=\"`block.Volume`\" pulumi-lang-yaml=\"`scaleway.block.Volume`\" pulumi-lang-java=\"`scaleway.block.Volume`\"\u003e`scaleway.block.Volume`\u003c/span\u003e resource is used to create and manage Scaleway Block Storage volumes.\n\nRefer to the Block Storage [product documentation](https://www.scaleway.com/en/docs/block-storage/) and [API documentation](https://www.scaleway.com/en/developers/api/block/) for more information.\n\n## Example Usage\n\n### Create a Block Storage volume\n\nThe following command allows you to create a Block Storage volume of 20 GB with a 5000 [IOPS](https://www.scaleway.com/en/docs/block-storage/concepts/#iops).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst blockVolume = new scaleway.block.Volume(\"block_volume\", {\n    iops: 5000,\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nblock_volume = scaleway.block.Volume(\"block_volume\",\n    iops=5000,\n    name=\"some-volume-name\",\n    size_in_gb=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var blockVolume = new Scaleway.Block.Volume(\"block_volume\", new()\n    {\n        Iops = 5000,\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := block.NewVolume(ctx, \"block_volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 blockVolume = new Volume(\"blockVolume\", VolumeArgs.builder()\n            .iops(5000)\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  blockVolume:\n    type: scaleway:block:Volume\n    name: block_volume\n    properties:\n      iops: 5000\n      name: some-volume-name\n      sizeInGb: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst base = new scaleway.block.Volume(\"base\", {\n    name: \"block-volume-base\",\n    iops: 5000,\n    sizeInGb: 20,\n});\nconst main = new scaleway.block.Snapshot(\"main\", {\n    name: \"block-volume-from-snapshot\",\n    volumeId: base.id,\n});\nconst mainVolume = new scaleway.block.Volume(\"main\", {\n    name: \"block-volume-from-snapshot\",\n    iops: 5000,\n    snapshotId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbase = scaleway.block.Volume(\"base\",\n    name=\"block-volume-base\",\n    iops=5000,\n    size_in_gb=20)\nmain = scaleway.block.Snapshot(\"main\",\n    name=\"block-volume-from-snapshot\",\n    volume_id=base.id)\nmain_volume = scaleway.block.Volume(\"main\",\n    name=\"block-volume-from-snapshot\",\n    iops=5000,\n    snapshot_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @base = new Scaleway.Block.Volume(\"base\", new()\n    {\n        Name = \"block-volume-base\",\n        Iops = 5000,\n        SizeInGb = 20,\n    });\n\n    var main = new Scaleway.Block.Snapshot(\"main\", new()\n    {\n        Name = \"block-volume-from-snapshot\",\n        VolumeId = @base.Id,\n    });\n\n    var mainVolume = new Scaleway.Block.Volume(\"main\", new()\n    {\n        Name = \"block-volume-from-snapshot\",\n        Iops = 5000,\n        SnapshotId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbase, err := block.NewVolume(ctx, \"base\", \u0026block.VolumeArgs{\n\t\t\tName:     pulumi.String(\"block-volume-base\"),\n\t\t\tIops:     pulumi.Int(5000),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := block.NewSnapshot(ctx, \"main\", \u0026block.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"block-volume-from-snapshot\"),\n\t\t\tVolumeId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = block.NewVolume(ctx, \"main\", \u0026block.VolumeArgs{\n\t\t\tName:       pulumi.String(\"block-volume-from-snapshot\"),\n\t\t\tIops:       pulumi.Int(5000),\n\t\t\tSnapshotId: main.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.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.block.Snapshot;\nimport com.pulumi.scaleway.block.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 base = new Volume(\"base\", VolumeArgs.builder()\n            .name(\"block-volume-base\")\n            .iops(5000)\n            .sizeInGb(20)\n            .build());\n\n        var main = new Snapshot(\"main\", SnapshotArgs.builder()\n            .name(\"block-volume-from-snapshot\")\n            .volumeId(base.id())\n            .build());\n\n        var mainVolume = new Volume(\"mainVolume\", VolumeArgs.builder()\n            .name(\"block-volume-from-snapshot\")\n            .iops(5000)\n            .snapshotId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  base:\n    type: scaleway:block:Volume\n    properties:\n      name: block-volume-base\n      iops: 5000\n      sizeInGb: 20\n  main:\n    type: scaleway:block:Snapshot\n    properties:\n      name: block-volume-from-snapshot\n      volumeId: ${base.id}\n  mainVolume:\n    type: scaleway:block:Volume\n    name: main\n    properties:\n      name: block-volume-from-snapshot\n      iops: 5000\n      snapshotId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a Block Storage volume using the zoned ID (`{zone}/{id}`) format.\n\n```sh\n$ pulumi import scaleway:index/blockVolume:BlockVolume block_volume fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "instanceVolumeId": {
                    "type": "string",
                    "description": "The instance volume to create the block volume from"
                },
                "iops": {
                    "type": "integer",
                    "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Project the volume is associated with.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume in gigabytes.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the volume should be created.\n"
                }
            },
            "required": [
                "instanceVolumeId",
                "iops",
                "name",
                "projectId",
                "sizeInGb"
            ],
            "inputProperties": {
                "instanceVolumeId": {
                    "type": "string",
                    "description": "The instance volume to create the block volume from",
                    "willReplaceOnChanges": true
                },
                "iops": {
                    "type": "integer",
                    "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "). The ID of the Project the volume is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume in gigabytes.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "). The zone in which the volume should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "iops"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BlockVolume resources.\n",
                "properties": {
                    "instanceVolumeId": {
                        "type": "string",
                        "description": "The instance volume to create the block volume from",
                        "willReplaceOnChanges": true
                    },
                    "iops": {
                        "type": "integer",
                        "description": "The maximum [IOPs](https://www.scaleway.com/en/docs/block-storage/concepts/#iops) expected, must match available options.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the volume. If not provided, a name will be randomly generated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "). The ID of the Project the volume is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "The size of the volume in gigabytes.\n"
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "If set, the new volume will be created from this snapshot.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the volume.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "). The zone in which the volume should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/blockvolume.BlockVolume has been deprecated in favor of scaleway.block/volume.Volume"
        },
        "scaleway:index/cockpit:Cockpit": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Cockpit`\" pulumi-lang-dotnet=\"`scaleway.observability.Cockpit`\" pulumi-lang-go=\"`observability.Cockpit`\" pulumi-lang-python=\"`observability.Cockpit`\" pulumi-lang-yaml=\"`scaleway.observability.Cockpit`\" pulumi-lang-java=\"`scaleway.observability.Cockpit`\"\u003e`scaleway.observability.Cockpit`\u003c/span\u003e has been deprecated and will no longer be supported after January 1st, 2025. Instead, use the new specialized resources:\n\n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Source`\" pulumi-lang-dotnet=\"`scaleway.observability.Source`\" pulumi-lang-go=\"`observability.Source`\" pulumi-lang-python=\"`observability.Source`\" pulumi-lang-yaml=\"`scaleway.observability.Source`\" pulumi-lang-java=\"`scaleway.observability.Source`\"\u003e`scaleway.observability.Source`\u003c/span\u003e for managing data sources (metrics, logs, traces)\n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.AlertManager`\" pulumi-lang-dotnet=\"`scaleway.observability.AlertManager`\" pulumi-lang-go=\"`observability.AlertManager`\" pulumi-lang-python=\"`observability.AlertManager`\" pulumi-lang-yaml=\"`scaleway.observability.AlertManager`\" pulumi-lang-java=\"`scaleway.observability.AlertManager`\"\u003e`scaleway.observability.AlertManager`\u003c/span\u003e for managing alert manager\n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getGrafana`\" pulumi-lang-dotnet=\"`scaleway.observability.getGrafana`\" pulumi-lang-go=\"`observability.getGrafana`\" pulumi-lang-python=\"`observability_get_grafana`\" pulumi-lang-yaml=\"`scaleway.observability.getGrafana`\" pulumi-lang-java=\"`scaleway.observability.getGrafana`\"\u003e`scaleway.observability.getGrafana`\u003c/span\u003e data source for accessing Grafana (authentication via IAM)\n\nFor detailed migration instructions, see the Cockpit Migration Guide.\n\n\u003e **Note:**\nAs of September 2024, Cockpit has introduced [regionalization](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#region) to offer more flexibility and resilience.\nIf you have created customized dashboards with data for your Scaleway resources before April 2024, you will need to update your queries in Grafana, with the new regionalized data sources.\n\n\u003e **Note:**\nFrom January 1st 2025, Cockpit plans have been deprecated. You can now edit the retention period for all your datasources (metrics, logs, and traces) separately. Refer to our product documentation for more information on [possible retention values](https://www.scaleway.com/en/docs/cockpit/concepts/#retention) and [pricing](https://www.scaleway.com/en/docs/cockpit/faq/#how-am-i-billed-for-increasing-data-retention-period).\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-dotnet=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-go=\"`observability.GrafanaUser`\" pulumi-lang-python=\"`observability.GrafanaUser`\" pulumi-lang-yaml=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-java=\"`scaleway.observability.GrafanaUser`\"\u003e`scaleway.observability.GrafanaUser`\u003c/span\u003e resource is deprecated. Use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getGrafana`\" pulumi-lang-dotnet=\"`scaleway.observability.getGrafana`\" pulumi-lang-go=\"`observability.getGrafana`\" pulumi-lang-python=\"`observability_get_grafana`\" pulumi-lang-yaml=\"`scaleway.observability.getGrafana`\" pulumi-lang-java=\"`scaleway.observability.getGrafana`\"\u003e`scaleway.observability.getGrafana`\u003c/span\u003e data source to retrieve the Grafana URL and authenticate using your Scaleway IAM credentials.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Cockpit`\" pulumi-lang-dotnet=\"`scaleway.observability.Cockpit`\" pulumi-lang-go=\"`observability.Cockpit`\" pulumi-lang-python=\"`observability.Cockpit`\" pulumi-lang-yaml=\"`scaleway.observability.Cockpit`\" pulumi-lang-java=\"`scaleway.observability.Cockpit`\"\u003e`scaleway.observability.Cockpit`\u003c/span\u003e resource allows you to create and manage Scaleway Cockpit instances.\n\nRefer to Cockpit's [product documentation](https://www.scaleway.com/en/docs/observability/cockpit/concepts/) and [API documentation](https://www.scaleway.com/en/developers/api/cockpit/regional-api) for more information.\n\n## Example Usage\n\n### Manage Cockpit in the Scaleway default Project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Activate Cockpit in the default Project\nconst main = new scaleway.observability.Cockpit(\"main\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n# Activate Cockpit in the default Project\nmain = scaleway.observability.Cockpit(\"main\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Activate Cockpit in the default Project\n    var main = new Scaleway.Observability.Cockpit(\"main\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Activate Cockpit in the default Project\n\t\t_, err := observability.NewCockpit(ctx, \"main\", 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.scaleway.observability.Cockpit;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Activate Cockpit in the default Project\n        var main = new Cockpit(\"main\");\n\n    }\n}\n```\n```yaml\nresources:\n  # Activate Cockpit in the default Project\n  main:\n    type: scaleway:observability:Cockpit\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Manage Cockpit in a specific Project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Activate Cockpit in a specific Project\nconst main = new scaleway.observability.Cockpit(\"main\", {projectId: \"11111111-1111-1111-1111-111111111111\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n# Activate Cockpit in a specific Project\nmain = scaleway.observability.Cockpit(\"main\", project_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Activate Cockpit in a specific Project\n    var main = new Scaleway.Observability.Cockpit(\"main\", new()\n    {\n        ProjectId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Activate Cockpit in a specific Project\n\t\t_, err := observability.NewCockpit(ctx, \"main\", \u0026observability.CockpitArgs{\n\t\t\tProjectId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.observability.Cockpit;\nimport com.pulumi.scaleway.observability.CockpitArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Activate Cockpit in a specific Project\n        var main = new Cockpit(\"main\", CockpitArgs.builder()\n            .projectId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Activate Cockpit in a specific Project\n  main:\n    type: scaleway:observability:Cockpit\n    properties:\n      projectId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Choose a specific pricing plan for Cockpit\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.observability.Cockpit(\"main\", {\n    projectId: \"11111111-1111-1111-1111-111111111111\",\n    plan: \"premium\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.observability.Cockpit(\"main\",\n    project_id=\"11111111-1111-1111-1111-111111111111\",\n    plan=\"premium\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Observability.Cockpit(\"main\", new()\n    {\n        ProjectId = \"11111111-1111-1111-1111-111111111111\",\n        Plan = \"premium\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := observability.NewCockpit(ctx, \"main\", \u0026observability.CockpitArgs{\n\t\t\tProjectId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\tPlan:      pulumi.String(\"premium\"),\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.scaleway.observability.Cockpit;\nimport com.pulumi.scaleway.observability.CockpitArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Cockpit(\"main\", CockpitArgs.builder()\n            .projectId(\"11111111-1111-1111-1111-111111111111\")\n            .plan(\"premium\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:observability:Cockpit\n    properties:\n      projectId: 11111111-1111-1111-1111-111111111111\n      plan: premium\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use the Grafana Terraform provider (Deprecated)\n\n\u003e **Note:** This example is deprecated. Use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getGrafana`\" pulumi-lang-dotnet=\"`scaleway.observability.getGrafana`\" pulumi-lang-go=\"`observability.getGrafana`\" pulumi-lang-python=\"`observability_get_grafana`\" pulumi-lang-yaml=\"`scaleway.observability.getGrafana`\" pulumi-lang-java=\"`scaleway.observability.getGrafana`\"\u003e`scaleway.observability.getGrafana`\u003c/span\u003e data source with IAM authentication instead.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n// resource \"scaleway_cockpit_grafana_user\" \"main\" {\n//   project_id = scaleway_cockpit.main.project_id\n//   login      = \"example\"\n//   role       = \"editor\"\n// }\n//\n// provider \"grafana\" {\n//   url  = scaleway_cockpit.main.endpoints.0.grafana_url\n//   auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n// }\n// New approach - Use scaleway_cockpit_grafana data source with IAM auth\nconst main = scaleway.observability.getGrafana({\n    projectId: mainScalewayCockpit.projectId,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\n\n# Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n# resource \"scaleway_cockpit_grafana_user\" \"main\" {\n#   project_id = scaleway_cockpit.main.project_id\n#   login      = \"example\"\n#   role       = \"editor\"\n# }\n#\n# provider \"grafana\" {\n#   url  = scaleway_cockpit.main.endpoints.0.grafana_url\n#   auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n# }\n# New approach - Use scaleway_cockpit_grafana data source with IAM auth\nmain = scaleway.observability.get_grafana(project_id=main_scaleway_cockpit[\"projectId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n    // resource \"scaleway_cockpit_grafana_user\" \"main\" {\n    //   project_id = scaleway_cockpit.main.project_id\n    //   login      = \"example\"\n    //   role       = \"editor\"\n    // }\n    //\n    // provider \"grafana\" {\n    //   url  = scaleway_cockpit.main.endpoints.0.grafana_url\n    //   auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n    // }\n    // New approach - Use scaleway_cockpit_grafana data source with IAM auth\n    var main = Scaleway.Observability.GetGrafana.Invoke(new()\n    {\n        ProjectId = mainScalewayCockpit.ProjectId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n\t\t//\n\t\t//\tresource \"scaleway_cockpit_grafana_user\" \"main\" {\n\t\t//\t  project_id = scaleway_cockpit.main.project_id\n\t\t//\t  login      = \"example\"\n\t\t//\t  role       = \"editor\"\n\t\t//\t}\n\t\t//\n\t\t//\tprovider \"grafana\" {\n\t\t//\t  url  = scaleway_cockpit.main.endpoints.0.grafana_url\n\t\t//\t  auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n\t\t//\t}\n\t\t//\n\t\t// New approach - Use scaleway_cockpit_grafana data source with IAM auth\n\t\t_, err := observability.GetGrafana(ctx, \u0026observability.GetGrafanaArgs{\n\t\t\tProjectId: pulumi.StringRef(mainScalewayCockpit.ProjectId),\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.scaleway.observability.ObservabilityFunctions;\nimport com.pulumi.scaleway.observability.inputs.GetGrafanaArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n        // resource \"scaleway_cockpit_grafana_user\" \"main\" {\n        //   project_id = scaleway_cockpit.main.project_id\n        //   login      = \"example\"\n        //   role       = \"editor\"\n        // }\n        //\n        // provider \"grafana\" {\n        //   url  = scaleway_cockpit.main.endpoints.0.grafana_url\n        //   auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n        // }\n        // New approach - Use scaleway_cockpit_grafana data source with IAM auth\n        final var main = ObservabilityFunctions.getGrafana(GetGrafanaArgs.builder()\n            .projectId(mainScalewayCockpit.projectId())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  # Old approach (deprecated) - Using scaleway_cockpit_grafana_user\n  # // resource \"scaleway_cockpit_grafana_user\" \"main\" {\n  # //   project_id = scaleway_cockpit.main.project_id\n  # //   login      = \"example\"\n  # //   role       = \"editor\"\n  # // }\n  # //\n  # // provider \"grafana\" {\n  # //   url  = scaleway_cockpit.main.endpoints.0.grafana_url\n  # //   auth = \"${scaleway_cockpit_grafana_user.main.login}:${scaleway_cockpit_grafana_user.main.password}\"\n  # // }\n\n  # // New approach - Use scaleway_cockpit_grafana data source with IAM auth\n  main:\n    fn::invoke:\n      function: scaleway:observability:getGrafana\n      arguments:\n        projectId: ${mainScalewayCockpit.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Migration\n\nThis resource is deprecated and will be removed after January 1st, 2025. To migrate to the new infrastructure, please refer to the Cockpit Migration Guide which provides step-by-step instructions for transitioning to:\n\n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Source`\" pulumi-lang-dotnet=\"`scaleway.observability.Source`\" pulumi-lang-go=\"`observability.Source`\" pulumi-lang-python=\"`observability.Source`\" pulumi-lang-yaml=\"`scaleway.observability.Source`\" pulumi-lang-java=\"`scaleway.observability.Source`\"\u003e`scaleway.observability.Source`\u003c/span\u003e for managing data sources (metrics, logs, traces)\n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.AlertManager`\" pulumi-lang-dotnet=\"`scaleway.observability.AlertManager`\" pulumi-lang-go=\"`observability.AlertManager`\" pulumi-lang-python=\"`observability.AlertManager`\" pulumi-lang-yaml=\"`scaleway.observability.AlertManager`\" pulumi-lang-java=\"`scaleway.observability.AlertManager`\"\u003e`scaleway.observability.AlertManager`\u003c/span\u003e for managing alert manager  \n- \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getGrafana`\" pulumi-lang-dotnet=\"`scaleway.observability.getGrafana`\" pulumi-lang-go=\"`observability.getGrafana`\" pulumi-lang-python=\"`observability_get_grafana`\" pulumi-lang-yaml=\"`scaleway.observability.getGrafana`\" pulumi-lang-java=\"`scaleway.observability.getGrafana`\"\u003e`scaleway.observability.getGrafana`\u003c/span\u003e data source for accessing Grafana (with IAM authentication)\n\n## Import\n\nThis section explains how to import a Cockpit using its `{project_id}`.\n\n```sh\n$ pulumi import scaleway:index/cockpit:Cockpit main 11111111-1111-1111-1111-111111111111\n```\n\n\u003e **Note:** Import functionality will be removed when this resource is deprecated.\n\n",
            "properties": {
                "endpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/CockpitEndpoint:CockpitEndpoint"
                    },
                    "description": "(Deprecated) A list of [endpoints](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#endpoints) related to Cockpit, each with specific URLs:\n",
                    "deprecationMessage": "Use 'scaleway_cockpit_source' instead of 'endpoints'. This field will be removed in future releases."
                },
                "plan": {
                    "type": "string",
                    "description": "Name of the plan to use. Available plans are: free, premium, and custom.\n\u003e **Important:** The plan field is deprecated. Any modification or selection will have no effect.\n\n\u003e **Warning:** This entire resource is deprecated and will be removed after January 1st, 2025. Please migrate to the new specialized resources as described in the Cockpit Migration Guide.\n",
                    "deprecationMessage": "The 'plan' attribute is deprecated and no longer has any effect. Future updates will remove this attribute entirely."
                },
                "planId": {
                    "type": "string",
                    "description": "(Deprecated) The ID of the current pricing plan.\n",
                    "deprecationMessage": "The 'plan_id' attribute is deprecated and will be removed in a future release."
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n"
                },
                "pushUrls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/CockpitPushUrl:CockpitPushUrl"
                    },
                    "description": "[DEPRECATED] Push_url",
                    "deprecationMessage": "Please use \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Source`\" pulumi-lang-dotnet=\"`scaleway.observability.Source`\" pulumi-lang-go=\"`observability.Source`\" pulumi-lang-python=\"`observability.Source`\" pulumi-lang-yaml=\"`scaleway.observability.Source`\" pulumi-lang-java=\"`scaleway.observability.Source`\"\u003e`scaleway.observability.Source`\u003c/span\u003e instead"
                }
            },
            "required": [
                "endpoints",
                "planId",
                "projectId",
                "pushUrls"
            ],
            "inputProperties": {
                "plan": {
                    "type": "string",
                    "description": "Name of the plan to use. Available plans are: free, premium, and custom.\n\u003e **Important:** The plan field is deprecated. Any modification or selection will have no effect.\n\n\u003e **Warning:** This entire resource is deprecated and will be removed after January 1st, 2025. Please migrate to the new specialized resources as described in the Cockpit Migration Guide.\n",
                    "deprecationMessage": "The 'plan' attribute is deprecated and no longer has any effect. Future updates will remove this attribute entirely."
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cockpit resources.\n",
                "properties": {
                    "endpoints": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/CockpitEndpoint:CockpitEndpoint"
                        },
                        "description": "(Deprecated) A list of [endpoints](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#endpoints) related to Cockpit, each with specific URLs:\n",
                        "deprecationMessage": "Use 'scaleway_cockpit_source' instead of 'endpoints'. This field will be removed in future releases."
                    },
                    "plan": {
                        "type": "string",
                        "description": "Name of the plan to use. Available plans are: free, premium, and custom.\n\u003e **Important:** The plan field is deprecated. Any modification or selection will have no effect.\n\n\u003e **Warning:** This entire resource is deprecated and will be removed after January 1st, 2025. Please migrate to the new specialized resources as described in the Cockpit Migration Guide.\n",
                        "deprecationMessage": "The 'plan' attribute is deprecated and no longer has any effect. Future updates will remove this attribute entirely."
                    },
                    "planId": {
                        "type": "string",
                        "description": "(Deprecated) The ID of the current pricing plan.\n",
                        "deprecationMessage": "The 'plan_id' attribute is deprecated and will be removed in a future release."
                    },
                    "projectId": {
                        "type": "string",
                        "description": ") The ID of the Project the Cockpit is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "pushUrls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/CockpitPushUrl:CockpitPushUrl"
                        },
                        "description": "[DEPRECATED] Push_url",
                        "deprecationMessage": "Please use \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Source`\" pulumi-lang-dotnet=\"`scaleway.observability.Source`\" pulumi-lang-go=\"`observability.Source`\" pulumi-lang-python=\"`observability.Source`\" pulumi-lang-yaml=\"`scaleway.observability.Source`\" pulumi-lang-java=\"`scaleway.observability.Source`\"\u003e`scaleway.observability.Source`\u003c/span\u003e instead"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/cockpit.Cockpit has been deprecated in favor of scaleway.observability/cockpit.Cockpit"
        },
        "scaleway:index/cockpitAlertManager:CockpitAlertManager": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.AlertManager`\" pulumi-lang-dotnet=\"`scaleway.observability.AlertManager`\" pulumi-lang-go=\"`observability.AlertManager`\" pulumi-lang-python=\"`observability.AlertManager`\" pulumi-lang-yaml=\"`scaleway.observability.AlertManager`\" pulumi-lang-java=\"`scaleway.observability.AlertManager`\"\u003e`scaleway.observability.AlertManager`\u003c/span\u003e resource allows you to enable and manage the Scaleway Cockpit [alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager).\n\nRefer to Cockpit's [product documentation](https://www.scaleway.com/en/docs/observability/cockpit/concepts/) and [API documentation](https://www.scaleway.com/en/developers/api/cockpit/regional-api) for more information.\n\n## Example Usage\n\n### Enable preconfigured alerts (Recommended)\n\nUse preconfigured alerts to monitor your Scaleway resources with ready-to-use alert rules:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"my-observability-project\"});\nconst main = new scaleway.observability.Cockpit(\"main\", {projectId: project.id});\nconst all = scaleway.observability.getPreconfiguredAlertOutput({\n    projectId: main.projectId,\n});\nconst mainAlertManager = new scaleway.observability.AlertManager(\"main\", {\n    projectId: main.projectId,\n    preconfiguredAlertIds: all.apply(all =\u003e .filter(alert =\u003e alert.productName == \"instance\").map(alert =\u003e (alert.preconfiguredRuleId))),\n    contactPoints: [{\n        email: \"alerts@example.com\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"my-observability-project\")\nmain = scaleway.observability.Cockpit(\"main\", project_id=project.id)\nall = scaleway.observability.get_preconfigured_alert_output(project_id=main.project_id)\nmain_alert_manager = scaleway.observability.AlertManager(\"main\",\n    project_id=main.project_id,\n    preconfigured_alert_ids=all.apply(lambda all: [alert.preconfigured_rule_id for alert in all.alerts if alert.product_name == \"instance\"]),\n    contact_points=[{\n        \"email\": \"alerts@example.com\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"my-observability-project\",\n    });\n\n    var main = new Scaleway.Observability.Cockpit(\"main\", new()\n    {\n        ProjectId = project.Id,\n    });\n\n    var all = Scaleway.Observability.GetPreconfiguredAlert.Invoke(new()\n    {\n        ProjectId = main.ProjectId,\n    });\n\n    var mainAlertManager = new Scaleway.Observability.AlertManager(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        PreconfiguredAlertIds = .Where(alert =\u003e alert.ProductName == \"instance\").Select(alert =\u003e \n        {\n            return alert.PreconfiguredRuleId;\n        }).ToList(),\n        ContactPoints = new[]\n        {\n            new Scaleway.Observability.Inputs.AlertManagerContactPointArgs\n            {\n                Email = \"alerts@example.com\",\n            },\n        },\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable the alert manager with contact points\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"tf_test_project\"});\nconst alertManager = new scaleway.observability.AlertManager(\"alert_manager\", {\n    projectId: project.id,\n    contactPoints: [\n        {\n            email: \"alert1@example.com\",\n        },\n        {\n            email: \"alert2@example.com\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"tf_test_project\")\nalert_manager = scaleway.observability.AlertManager(\"alert_manager\",\n    project_id=project.id,\n    contact_points=[\n        {\n            \"email\": \"alert1@example.com\",\n        },\n        {\n            \"email\": \"alert2@example.com\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"tf_test_project\",\n    });\n\n    var alertManager = new Scaleway.Observability.AlertManager(\"alert_manager\", new()\n    {\n        ProjectId = project.Id,\n        ContactPoints = new[]\n        {\n            new Scaleway.Observability.Inputs.AlertManagerContactPointArgs\n            {\n                Email = \"alert1@example.com\",\n            },\n            new Scaleway.Observability.Inputs.AlertManagerContactPointArgs\n            {\n                Email = \"alert2@example.com\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf_test_project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = observability.NewAlertManager(ctx, \"alert_manager\", \u0026observability.AlertManagerArgs{\n\t\t\tProjectId: project.ID(),\n\t\t\tContactPoints: observability.AlertManagerContactPointArray{\n\t\t\t\t\u0026observability.AlertManagerContactPointArgs{\n\t\t\t\t\tEmail: pulumi.String(\"alert1@example.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026observability.AlertManagerContactPointArgs{\n\t\t\t\t\tEmail: pulumi.String(\"alert2@example.com\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.AlertManager;\nimport com.pulumi.scaleway.observability.AlertManagerArgs;\nimport com.pulumi.scaleway.observability.inputs.AlertManagerContactPointArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"tf_test_project\")\n            .build());\n\n        var alertManager = new AlertManager(\"alertManager\", AlertManagerArgs.builder()\n            .projectId(project.id())\n            .contactPoints(            \n                AlertManagerContactPointArgs.builder()\n                    .email(\"alert1@example.com\")\n                    .build(),\n                AlertManagerContactPointArgs.builder()\n                    .email(\"alert2@example.com\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: tf_test_project\n  alertManager:\n    type: scaleway:observability:AlertManager\n    name: alert_manager\n    properties:\n      projectId: ${project.id}\n      contactPoints:\n        - email: alert1@example.com\n        - email: alert2@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Legacy: Enable managed alerts (Deprecated)\n\n\u003e **Deprecated:** The \u003cspan pulumi-lang-nodejs=\"`enableManagedAlerts`\" pulumi-lang-dotnet=\"`EnableManagedAlerts`\" pulumi-lang-go=\"`enableManagedAlerts`\" pulumi-lang-python=\"`enable_managed_alerts`\" pulumi-lang-yaml=\"`enableManagedAlerts`\" pulumi-lang-java=\"`enableManagedAlerts`\"\u003e`enableManagedAlerts`\u003c/span\u003e field is deprecated. Use \u003cspan pulumi-lang-nodejs=\"`preconfiguredAlertIds`\" pulumi-lang-dotnet=\"`PreconfiguredAlertIds`\" pulumi-lang-go=\"`preconfiguredAlertIds`\" pulumi-lang-python=\"`preconfigured_alert_ids`\" pulumi-lang-yaml=\"`preconfiguredAlertIds`\" pulumi-lang-java=\"`preconfiguredAlertIds`\"\u003e`preconfiguredAlertIds`\u003c/span\u003e instead.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"tf_test_project\"});\nconst alertManager = new scaleway.observability.AlertManager(\"alert_manager\", {\n    projectId: project.id,\n    enableManagedAlerts: true,\n    contactPoints: [{\n        email: \"alert@example.com\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"tf_test_project\")\nalert_manager = scaleway.observability.AlertManager(\"alert_manager\",\n    project_id=project.id,\n    enable_managed_alerts=True,\n    contact_points=[{\n        \"email\": \"alert@example.com\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"tf_test_project\",\n    });\n\n    var alertManager = new Scaleway.Observability.AlertManager(\"alert_manager\", new()\n    {\n        ProjectId = project.Id,\n        EnableManagedAlerts = true,\n        ContactPoints = new[]\n        {\n            new Scaleway.Observability.Inputs.AlertManagerContactPointArgs\n            {\n                Email = \"alert@example.com\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"tf_test_project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = observability.NewAlertManager(ctx, \"alert_manager\", \u0026observability.AlertManagerArgs{\n\t\t\tProjectId:           project.ID(),\n\t\t\tEnableManagedAlerts: pulumi.Bool(true),\n\t\t\tContactPoints: observability.AlertManagerContactPointArray{\n\t\t\t\t\u0026observability.AlertManagerContactPointArgs{\n\t\t\t\t\tEmail: pulumi.String(\"alert@example.com\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.AlertManager;\nimport com.pulumi.scaleway.observability.AlertManagerArgs;\nimport com.pulumi.scaleway.observability.inputs.AlertManagerContactPointArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"tf_test_project\")\n            .build());\n\n        var alertManager = new AlertManager(\"alertManager\", AlertManagerArgs.builder()\n            .projectId(project.id())\n            .enableManagedAlerts(true)\n            .contactPoints(AlertManagerContactPointArgs.builder()\n                .email(\"alert@example.com\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: tf_test_project\n  alertManager:\n    type: scaleway:observability:AlertManager\n    name: alert_manager\n    properties:\n      projectId: ${project.id}\n      enableManagedAlerts: true\n      contactPoints:\n        - email: alert@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import alert managers using the ID of the Project associated with Cockpit.\n\n```sh\n$ pulumi import scaleway:index/cockpitAlertManager:CockpitAlertManager main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "alertManagerUrl": {
                    "type": "string",
                    "description": "The URL of the alert manager.\n"
                },
                "contactPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/CockpitAlertManagerContactPoint:CockpitAlertManagerContactPoint"
                    },
                    "description": "A list of contact points with email addresses that will receive alerts. Each map should contain a single key \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.\n"
                },
                "enableManagedAlerts": {
                    "type": "boolean",
                    "description": "**Deprecated** (Optional, Boolean) Use \u003cspan pulumi-lang-nodejs=\"`preconfiguredAlertIds`\" pulumi-lang-dotnet=\"`PreconfiguredAlertIds`\" pulumi-lang-go=\"`preconfiguredAlertIds`\" pulumi-lang-python=\"`preconfigured_alert_ids`\" pulumi-lang-yaml=\"`preconfiguredAlertIds`\" pulumi-lang-java=\"`preconfiguredAlertIds`\"\u003e`preconfiguredAlertIds`\u003c/span\u003e instead. This field will be removed in a future version. When 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, it enables *all* preconfigured alerts for the project. You cannot filter or disable individual alerts with this legacy flag.\n",
                    "deprecationMessage": "Use 'preconfigured_alert_ids' instead. This field will be removed in a future version."
                },
                "preconfiguredAlertIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of preconfigured alert rule IDs to enable explicitly. Use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-dotnet=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-go=\"`observability.getPreconfiguredAlert`\" pulumi-lang-python=\"`observability_get_preconfigured_alert`\" pulumi-lang-yaml=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-java=\"`scaleway.observability.getPreconfiguredAlert`\"\u003e`scaleway.observability.getPreconfiguredAlert`\u003c/span\u003e data source to list available alerts.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the [alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager) should be enabled.\n"
                }
            },
            "required": [
                "alertManagerUrl",
                "enableManagedAlerts",
                "projectId"
            ],
            "inputProperties": {
                "contactPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/CockpitAlertManagerContactPoint:CockpitAlertManagerContactPoint"
                    },
                    "description": "A list of contact points with email addresses that will receive alerts. Each map should contain a single key \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.\n"
                },
                "enableManagedAlerts": {
                    "type": "boolean",
                    "description": "**Deprecated** (Optional, Boolean) Use \u003cspan pulumi-lang-nodejs=\"`preconfiguredAlertIds`\" pulumi-lang-dotnet=\"`PreconfiguredAlertIds`\" pulumi-lang-go=\"`preconfiguredAlertIds`\" pulumi-lang-python=\"`preconfigured_alert_ids`\" pulumi-lang-yaml=\"`preconfiguredAlertIds`\" pulumi-lang-java=\"`preconfiguredAlertIds`\"\u003e`preconfiguredAlertIds`\u003c/span\u003e instead. This field will be removed in a future version. When 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, it enables *all* preconfigured alerts for the project. You cannot filter or disable individual alerts with this legacy flag.\n",
                    "deprecationMessage": "Use 'preconfigured_alert_ids' instead. This field will be removed in a future version."
                },
                "preconfiguredAlertIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of preconfigured alert rule IDs to enable explicitly. Use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-dotnet=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-go=\"`observability.getPreconfiguredAlert`\" pulumi-lang-python=\"`observability_get_preconfigured_alert`\" pulumi-lang-yaml=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-java=\"`scaleway.observability.getPreconfiguredAlert`\"\u003e`scaleway.observability.getPreconfiguredAlert`\u003c/span\u003e data source to list available alerts.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the [alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager) should be enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CockpitAlertManager resources.\n",
                "properties": {
                    "alertManagerUrl": {
                        "type": "string",
                        "description": "The URL of the alert manager.\n"
                    },
                    "contactPoints": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/CockpitAlertManagerContactPoint:CockpitAlertManagerContactPoint"
                        },
                        "description": "A list of contact points with email addresses that will receive alerts. Each map should contain a single key \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.\n"
                    },
                    "enableManagedAlerts": {
                        "type": "boolean",
                        "description": "**Deprecated** (Optional, Boolean) Use \u003cspan pulumi-lang-nodejs=\"`preconfiguredAlertIds`\" pulumi-lang-dotnet=\"`PreconfiguredAlertIds`\" pulumi-lang-go=\"`preconfiguredAlertIds`\" pulumi-lang-python=\"`preconfigured_alert_ids`\" pulumi-lang-yaml=\"`preconfiguredAlertIds`\" pulumi-lang-java=\"`preconfiguredAlertIds`\"\u003e`preconfiguredAlertIds`\u003c/span\u003e instead. This field will be removed in a future version. When 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, it enables *all* preconfigured alerts for the project. You cannot filter or disable individual alerts with this legacy flag.\n",
                        "deprecationMessage": "Use 'preconfigured_alert_ids' instead. This field will be removed in a future version."
                    },
                    "preconfiguredAlertIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A set of preconfigured alert rule IDs to enable explicitly. Use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-dotnet=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-go=\"`observability.getPreconfiguredAlert`\" pulumi-lang-python=\"`observability_get_preconfigured_alert`\" pulumi-lang-yaml=\"`scaleway.observability.getPreconfiguredAlert`\" pulumi-lang-java=\"`scaleway.observability.getPreconfiguredAlert`\"\u003e`scaleway.observability.getPreconfiguredAlert`\u003c/span\u003e data source to list available alerts.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": ") The ID of the Project the Cockpit is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": ") The region where the [alert manager](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#alert-manager) should be enabled.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/cockpitalertmanager.CockpitAlertManager has been deprecated in favor of scaleway.observability/alertmanager.AlertManager"
        },
        "scaleway:index/cockpitGrafanaUser:CockpitGrafanaUser": {
            "description": "\u003e **Deprecated:** This resource is deprecated and will be removed on **January 1st, 2026**.\n\n\u003e **Migration Guide:** Grafana authentication is now managed through [Scaleway IAM (Identity and Access Management)](https://www.scaleway.com/en/docs/identity-and-access-management/iam/). To access your Grafana instance, use the \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.getGrafana`\" pulumi-lang-dotnet=\"`scaleway.observability.getGrafana`\" pulumi-lang-go=\"`observability.getGrafana`\" pulumi-lang-python=\"`observability_get_grafana`\" pulumi-lang-yaml=\"`scaleway.observability.getGrafana`\" pulumi-lang-java=\"`scaleway.observability.getGrafana`\"\u003e`scaleway.observability.getGrafana`\u003c/span\u003e data source to retrieve the Grafana URL and authenticate using your Scaleway IAM credentials.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-dotnet=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-go=\"`observability.GrafanaUser`\" pulumi-lang-python=\"`observability.GrafanaUser`\" pulumi-lang-yaml=\"`scaleway.observability.GrafanaUser`\" pulumi-lang-java=\"`scaleway.observability.GrafanaUser`\"\u003e`scaleway.observability.GrafanaUser`\u003c/span\u003e resource allows you to create and manage [Grafana users](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#grafana-users) in Scaleway Cockpit.\n\nRefer to Cockpit's [product documentation](https://www.scaleway.com/en/docs/observability/cockpit/concepts/) and [API documentation](https://www.scaleway.com/en/developers/api/cockpit/regional-api) for more information.\n\n## Example Usage\n\n### Migration to IAM Authentication\n\nInstead of managing Grafana users, retrieve your Grafana URL using the data source:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Old approach (deprecated)\n// resource \"scaleway_cockpit_grafana_user\" \"main\" {\n//   project_id = scaleway_account_project.project.id\n//   login      = \"my-awesome-user\"\n//   role       = \"editor\"\n// }\n// New approach - Use IAM authentication\nconst main = scaleway.observability.getGrafana({\n    projectId: project.id,\n});\nexport const grafanaUrl = main.then(main =\u003e main.grafanaUrl);\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\n\n# Old approach (deprecated)\n# resource \"scaleway_cockpit_grafana_user\" \"main\" {\n#   project_id = scaleway_account_project.project.id\n#   login      = \"my-awesome-user\"\n#   role       = \"editor\"\n# }\n# New approach - Use IAM authentication\nmain = scaleway.observability.get_grafana(project_id=project[\"id\"])\npulumi.export(\"grafanaUrl\", main.grafana_url)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Old approach (deprecated)\n    // resource \"scaleway_cockpit_grafana_user\" \"main\" {\n    //   project_id = scaleway_account_project.project.id\n    //   login      = \"my-awesome-user\"\n    //   role       = \"editor\"\n    // }\n    // New approach - Use IAM authentication\n    var main = Scaleway.Observability.GetGrafana.Invoke(new()\n    {\n        ProjectId = project.Id,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"grafanaUrl\"] = main.Apply(getGrafanaResult =\u003e getGrafanaResult.GrafanaUrl),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Old approach (deprecated)\n\t\t//\n\t\t//\tresource \"scaleway_cockpit_grafana_user\" \"main\" {\n\t\t//\t  project_id = scaleway_account_project.project.id\n\t\t//\t  login      = \"my-awesome-user\"\n\t\t//\t  role       = \"editor\"\n\t\t//\t}\n\t\t//\n\t\t// New approach - Use IAM authentication\n\t\tmain, err := observability.GetGrafana(ctx, \u0026observability.GetGrafanaArgs{\n\t\t\tProjectId: pulumi.StringRef(project.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"grafanaUrl\", main.GrafanaUrl)\n\t\treturn nil\n\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.scaleway.observability.ObservabilityFunctions;\nimport com.pulumi.scaleway.observability.inputs.GetGrafanaArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Old approach (deprecated)\n        // resource \"scaleway_cockpit_grafana_user\" \"main\" {\n        //   project_id = scaleway_account_project.project.id\n        //   login      = \"my-awesome-user\"\n        //   role       = \"editor\"\n        // }\n        // New approach - Use IAM authentication\n        final var main = ObservabilityFunctions.getGrafana(GetGrafanaArgs.builder()\n            .projectId(project.id())\n            .build());\n\n        ctx.export(\"grafanaUrl\", main.grafanaUrl());\n    }\n}\n```\n```yaml\nvariables:\n  # Old approach (deprecated)\n  # resource \"scaleway_cockpit_grafana_user\" \"main\" {\n  #   project_id = scaleway_account_project.project.id\n  #   login      = \"my-awesome-user\"\n  #   role       = \"editor\"\n  # }\n\n  # New approach - Use IAM authentication\n  main:\n    fn::invoke:\n      function: scaleway:observability:getGrafana\n      arguments:\n        projectId: ${project.id}\noutputs:\n  grafanaUrl: ${main.grafanaUrl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Programmatic access with the Grafana provider\n\nTo automate Grafana configuration (e.g., dashboards, alerting) with Terraform, reuse your Scaleway IAM secret as an `X-Auth-Token` header. The Grafana provider must run in \u003cspan pulumi-lang-nodejs=\"`anonymous`\" pulumi-lang-dotnet=\"`Anonymous`\" pulumi-lang-go=\"`anonymous`\" pulumi-lang-python=\"`anonymous`\" pulumi-lang-yaml=\"`anonymous`\" pulumi-lang-java=\"`anonymous`\"\u003e`anonymous`\u003c/span\u003e mode because user/password authentication is deprecated.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\n// Scaleway IAM secret key used for both the Scaleway and Grafana providers\nconst scalewaySecretKey = config.require(\"scalewaySecretKey\");\nconst main = scaleway.observability.getGrafana({\n    projectId: project.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\n\nconfig = pulumi.Config()\n# Scaleway IAM secret key used for both the Scaleway and Grafana providers\nscaleway_secret_key = config.require(\"scalewaySecretKey\")\nmain = scaleway.observability.get_grafana(project_id=project[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    // Scaleway IAM secret key used for both the Scaleway and Grafana providers\n    var scalewaySecretKey = config.Require(\"scalewaySecretKey\");\n    var main = Scaleway.Observability.GetGrafana.Invoke(new()\n    {\n        ProjectId = project.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\t// Scaleway IAM secret key used for both the Scaleway and Grafana providers\n\t\tscalewaySecretKey := cfg.Require(\"scalewaySecretKey\")\n\t\t_, err := observability.GetGrafana(ctx, \u0026observability.GetGrafanaArgs{\n\t\t\tProjectId: pulumi.StringRef(project.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.scaleway.observability.ObservabilityFunctions;\nimport com.pulumi.scaleway.observability.inputs.GetGrafanaArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var scalewaySecretKey = config.require(\"scalewaySecretKey\");\n        final var main = ObservabilityFunctions.getGrafana(GetGrafanaArgs.builder()\n            .projectId(project.id())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  scalewaySecretKey:\n    type: string\nvariables:\n  main:\n    fn::invoke:\n      function: scaleway:observability:getGrafana\n      arguments:\n        projectId: ${project.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe header `X-Auth-Token` is mandatory when Grafana users are disabled. Store the IAM secret key securely (environment variable, secrets manager, etc.) and avoid committing it to version control.\n\n### Create a Grafana user (Deprecated)\n\nThe following command allows you to create a Grafana user within a specific Scaleway Project.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"test project grafana user\"});\nconst main = new scaleway.observability.GrafanaUser(\"main\", {\n    projectId: project.id,\n    login: \"my-awesome-user\",\n    role: \"editor\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"test project grafana user\")\nmain = scaleway.observability.GrafanaUser(\"main\",\n    project_id=project.id,\n    login=\"my-awesome-user\",\n    role=\"editor\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"test project grafana user\",\n    });\n\n    var main = new Scaleway.Observability.GrafanaUser(\"main\", new()\n    {\n        ProjectId = project.Id,\n        Login = \"my-awesome-user\",\n        Role = \"editor\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"test project grafana user\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = observability.NewGrafanaUser(ctx, \"main\", \u0026observability.GrafanaUserArgs{\n\t\t\tProjectId: project.ID(),\n\t\t\tLogin:     pulumi.String(\"my-awesome-user\"),\n\t\t\tRole:      pulumi.String(\"editor\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.GrafanaUser;\nimport com.pulumi.scaleway.observability.GrafanaUserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"test project grafana user\")\n            .build());\n\n        var main = new GrafanaUser(\"main\", GrafanaUserArgs.builder()\n            .projectId(project.id())\n            .login(\"my-awesome-user\")\n            .role(\"editor\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: test project grafana user\n  main:\n    type: scaleway:observability:GrafanaUser\n    properties:\n      projectId: ${project.id}\n      login: my-awesome-user\n      role: editor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import Grafana users using the ID of the Project associated with Cockpit, and the Grafana user ID in the `{project_id}/{grafana_user_id}` format.\n\n```sh\n$ pulumi import scaleway:index/cockpitGrafanaUser:CockpitGrafanaUser main 11111111-1111-1111-1111-111111111111/2\n```\n\n",
            "properties": {
                "grafanaUrl": {
                    "type": "string",
                    "description": "URL for Grafana.\n"
                },
                "login": {
                    "type": "string",
                    "description": "The username of the Grafana user. The \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e user is not yet available for creation. You need your Grafana username to log in to Grafana and access your dashboards.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password of the Grafana user.\n",
                    "secret": true
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n"
                },
                "role": {
                    "type": "string",
                    "description": "The role assigned to the Grafana user. Must be \u003cspan pulumi-lang-nodejs=\"`editor`\" pulumi-lang-dotnet=\"`Editor`\" pulumi-lang-go=\"`editor`\" pulumi-lang-python=\"`editor`\" pulumi-lang-yaml=\"`editor`\" pulumi-lang-java=\"`editor`\"\u003e`editor`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`viewer`\" pulumi-lang-dotnet=\"`Viewer`\" pulumi-lang-go=\"`viewer`\" pulumi-lang-python=\"`viewer`\" pulumi-lang-yaml=\"`viewer`\" pulumi-lang-java=\"`viewer`\"\u003e`viewer`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "grafanaUrl",
                "login",
                "password",
                "projectId",
                "role"
            ],
            "inputProperties": {
                "login": {
                    "type": "string",
                    "description": "The username of the Grafana user. The \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e user is not yet available for creation. You need your Grafana username to log in to Grafana and access your dashboards.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "role": {
                    "type": "string",
                    "description": "The role assigned to the Grafana user. Must be \u003cspan pulumi-lang-nodejs=\"`editor`\" pulumi-lang-dotnet=\"`Editor`\" pulumi-lang-go=\"`editor`\" pulumi-lang-python=\"`editor`\" pulumi-lang-yaml=\"`editor`\" pulumi-lang-java=\"`editor`\"\u003e`editor`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`viewer`\" pulumi-lang-dotnet=\"`Viewer`\" pulumi-lang-go=\"`viewer`\" pulumi-lang-python=\"`viewer`\" pulumi-lang-yaml=\"`viewer`\" pulumi-lang-java=\"`viewer`\"\u003e`viewer`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "login",
                "role"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CockpitGrafanaUser resources.\n",
                "properties": {
                    "grafanaUrl": {
                        "type": "string",
                        "description": "URL for Grafana.\n"
                    },
                    "login": {
                        "type": "string",
                        "description": "The username of the Grafana user. The \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e user is not yet available for creation. You need your Grafana username to log in to Grafana and access your dashboards.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "The password of the Grafana user.\n",
                        "secret": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": ") The ID of the Project the Cockpit is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "role": {
                        "type": "string",
                        "description": "The role assigned to the Grafana user. Must be \u003cspan pulumi-lang-nodejs=\"`editor`\" pulumi-lang-dotnet=\"`Editor`\" pulumi-lang-go=\"`editor`\" pulumi-lang-python=\"`editor`\" pulumi-lang-yaml=\"`editor`\" pulumi-lang-java=\"`editor`\"\u003e`editor`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`viewer`\" pulumi-lang-dotnet=\"`Viewer`\" pulumi-lang-go=\"`viewer`\" pulumi-lang-python=\"`viewer`\" pulumi-lang-yaml=\"`viewer`\" pulumi-lang-java=\"`viewer`\"\u003e`viewer`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/cockpitgrafanauser.CockpitGrafanaUser has been deprecated in favor of scaleway.observability/grafanauser.GrafanaUser"
        },
        "scaleway:index/cockpitSource:CockpitSource": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Source`\" pulumi-lang-dotnet=\"`scaleway.observability.Source`\" pulumi-lang-go=\"`observability.Source`\" pulumi-lang-python=\"`observability.Source`\" pulumi-lang-yaml=\"`scaleway.observability.Source`\" pulumi-lang-java=\"`scaleway.observability.Source`\"\u003e`scaleway.observability.Source`\u003c/span\u003e resource allows you to create and manage [data sources](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#data-sources) in Scaleway's Cockpit.\n\nRefer to Cockpit's [product documentation](https://www.scaleway.com/en/docs/observability/cockpit/concepts/) and [API documentation](https://www.scaleway.com/en/developers/api/cockpit/regional-api) for more information.\n\n## Example Usage\n\n### Create a data source\n\nThe following command allows you to create a [metrics](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#metric) data source named `my-data-source` in a given Project.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"test project data source\"});\nconst main = new scaleway.observability.Source(\"main\", {\n    projectId: project.id,\n    name: \"my-data-source\",\n    type: \"metrics\",\n    retentionDays: 6,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"test project data source\")\nmain = scaleway.observability.Source(\"main\",\n    project_id=project.id,\n    name=\"my-data-source\",\n    type=\"metrics\",\n    retention_days=6)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"test project data source\",\n    });\n\n    var main = new Scaleway.Observability.Source(\"main\", new()\n    {\n        ProjectId = project.Id,\n        Name = \"my-data-source\",\n        Type = \"metrics\",\n        RetentionDays = 6,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"test project data source\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = observability.NewSource(ctx, \"main\", \u0026observability.SourceArgs{\n\t\t\tProjectId:     project.ID(),\n\t\t\tName:          pulumi.String(\"my-data-source\"),\n\t\t\tType:          pulumi.String(\"metrics\"),\n\t\t\tRetentionDays: pulumi.Int(6),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.Source;\nimport com.pulumi.scaleway.observability.SourceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"test project data source\")\n            .build());\n\n        var main = new Source(\"main\", SourceArgs.builder()\n            .projectId(project.id())\n            .name(\"my-data-source\")\n            .type(\"metrics\")\n            .retentionDays(6)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: test project data source\n  main:\n    type: scaleway:observability:Source\n    properties:\n      projectId: ${project.id}\n      name: my-data-source\n      type: metrics\n      retentionDays: 6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a data source using the ID of the region it is located in, in the `{region}/{id}` format.\n\n```sh\n$ pulumi import scaleway:index/cockpitSource:CockpitSource main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the data source was created (in RFC 3339 format).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the data source.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "The origin of the Cockpit data source.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the data source is associated with.\n"
                },
                "pushUrl": {
                    "type": "string",
                    "description": "The URL endpoint used for pushing data to the Cockpit data source.\n"
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the data source is located.\n"
                },
                "retentionDays": {
                    "type": "integer",
                    "description": "The number of days to retain data in the data source. Must be a value between 1 and 365. For more details on retention policies, please refer to the [Scaleway Retention Documentation](https://www.scaleway.com/en/docs/cockpit/concepts/#retention). Note: Changes to this field will force the creation of a new resource.\n"
                },
                "synchronizedWithGrafana": {
                    "type": "boolean",
                    "description": "Indicates whether the data source is synchronized with Grafana.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The [type](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#data-types) of data source. Possible values are: \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`traces`\" pulumi-lang-dotnet=\"`Traces`\" pulumi-lang-go=\"`traces`\" pulumi-lang-python=\"`traces`\" pulumi-lang-yaml=\"`traces`\" pulumi-lang-java=\"`traces`\"\u003e`traces`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the data source was last updated (in RFC 3339 format).\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the Cockpit data source.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "origin",
                "projectId",
                "pushUrl",
                "retentionDays",
                "synchronizedWithGrafana",
                "updatedAt",
                "url"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the data source.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the data source is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the data source is located.\n",
                    "willReplaceOnChanges": true
                },
                "retentionDays": {
                    "type": "integer",
                    "description": "The number of days to retain data in the data source. Must be a value between 1 and 365. For more details on retention policies, please refer to the [Scaleway Retention Documentation](https://www.scaleway.com/en/docs/cockpit/concepts/#retention). Note: Changes to this field will force the creation of a new resource.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The [type](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#data-types) of data source. Possible values are: \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`traces`\" pulumi-lang-dotnet=\"`Traces`\" pulumi-lang-go=\"`traces`\" pulumi-lang-python=\"`traces`\" pulumi-lang-yaml=\"`traces`\" pulumi-lang-java=\"`traces`\"\u003e`traces`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "retentionDays"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CockpitSource resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the data source was created (in RFC 3339 format).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the data source.\n",
                        "willReplaceOnChanges": true
                    },
                    "origin": {
                        "type": "string",
                        "description": "The origin of the Cockpit data source.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": ") The ID of the Project the data source is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "pushUrl": {
                        "type": "string",
                        "description": "The URL endpoint used for pushing data to the Cockpit data source.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": ") The region where the data source is located.\n",
                        "willReplaceOnChanges": true
                    },
                    "retentionDays": {
                        "type": "integer",
                        "description": "The number of days to retain data in the data source. Must be a value between 1 and 365. For more details on retention policies, please refer to the [Scaleway Retention Documentation](https://www.scaleway.com/en/docs/cockpit/concepts/#retention). Note: Changes to this field will force the creation of a new resource.\n"
                    },
                    "synchronizedWithGrafana": {
                        "type": "boolean",
                        "description": "Indicates whether the data source is synchronized with Grafana.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The [type](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#data-types) of data source. Possible values are: \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`traces`\" pulumi-lang-dotnet=\"`Traces`\" pulumi-lang-go=\"`traces`\" pulumi-lang-python=\"`traces`\" pulumi-lang-yaml=\"`traces`\" pulumi-lang-java=\"`traces`\"\u003e`traces`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the data source was last updated (in RFC 3339 format).\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL of the Cockpit data source.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/cockpitsource.CockpitSource has been deprecated in favor of scaleway.observability/source.Source"
        },
        "scaleway:index/cockpitToken:CockpitToken": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.observability.Token`\" pulumi-lang-dotnet=\"`scaleway.observability.Token`\" pulumi-lang-go=\"`observability.Token`\" pulumi-lang-python=\"`observability.Token`\" pulumi-lang-yaml=\"`scaleway.observability.Token`\" pulumi-lang-java=\"`scaleway.observability.Token`\"\u003e`scaleway.observability.Token`\u003c/span\u003e resource allows you to create and manage your Cockpit [tokens](https://www.scaleway.com/en/docs/observability/cockpit/concepts/#tokens).\n\nRefer to Cockpit's [product documentation](https://www.scaleway.com/en/docs/observability/cockpit/concepts/) and [API documentation](https://www.scaleway.com/en/developers/api/cockpit/regional-api) for more information.\n\n## Example Usage\n\n### Use a Cockpit token\n\nThe following commands allow you to:\n\n- create a Scaleway Project named `my-project`\n- create a Cockpit token named `my-awesome-token` inside the Project\n- assign \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e permissions to the token for metrics and logs\n- disable \u003cspan pulumi-lang-nodejs=\"`write`\" pulumi-lang-dotnet=\"`Write`\" pulumi-lang-go=\"`write`\" pulumi-lang-python=\"`write`\" pulumi-lang-yaml=\"`write`\" pulumi-lang-java=\"`write`\"\u003e`write`\u003c/span\u003e permissions for metrics and logs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"my-project\"});\nconst main = new scaleway.observability.Token(\"main\", {\n    projectId: project.id,\n    name: \"my-awesome-token\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"my-project\")\nmain = scaleway.observability.Token(\"main\",\n    project_id=project.id,\n    name=\"my-awesome-token\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"my-project\",\n    });\n\n    var main = new Scaleway.Observability.Token(\"main\", new()\n    {\n        ProjectId = project.Id,\n        Name = \"my-awesome-token\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = observability.NewToken(ctx, \"main\", \u0026observability.TokenArgs{\n\t\t\tProjectId: project.ID(),\n\t\t\tName:      pulumi.String(\"my-awesome-token\"),\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.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.Token;\nimport com.pulumi.scaleway.observability.TokenArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"my-project\")\n            .build());\n\n        var main = new Token(\"main\", TokenArgs.builder()\n            .projectId(project.id())\n            .name(\"my-awesome-token\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: my-project\n  main:\n    type: scaleway:observability:Token\n    properties:\n      projectId: ${project.id}\n      name: my-awesome-token\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = new scaleway.account.Project(\"project\", {name: \"my-project\"});\n// Create a token that can read metrics and logs but not write\nconst main = new scaleway.observability.Token(\"main\", {\n    projectId: project.id,\n    name: \"my-awesome-token\",\n    scopes: {\n        queryMetrics: true,\n        writeMetrics: false,\n        queryLogs: true,\n        writeLogs: false,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.Project(\"project\", name=\"my-project\")\n# Create a token that can read metrics and logs but not write\nmain = scaleway.observability.Token(\"main\",\n    project_id=project.id,\n    name=\"my-awesome-token\",\n    scopes={\n        \"query_metrics\": True,\n        \"write_metrics\": False,\n        \"query_logs\": True,\n        \"write_logs\": False,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = new Scaleway.Account.Project(\"project\", new()\n    {\n        Name = \"my-project\",\n    });\n\n    // Create a token that can read metrics and logs but not write\n    var main = new Scaleway.Observability.Token(\"main\", new()\n    {\n        ProjectId = project.Id,\n        Name = \"my-awesome-token\",\n        Scopes = new Scaleway.Observability.Inputs.TokenScopesArgs\n        {\n            QueryMetrics = true,\n            WriteMetrics = false,\n            QueryLogs = true,\n            WriteLogs = false,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/observability\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.NewProject(ctx, \"project\", \u0026account.ProjectArgs{\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a token that can read metrics and logs but not write\n\t\t_, err = observability.NewToken(ctx, \"main\", \u0026observability.TokenArgs{\n\t\t\tProjectId: project.ID(),\n\t\t\tName:      pulumi.String(\"my-awesome-token\"),\n\t\t\tScopes: \u0026observability.TokenScopesArgs{\n\t\t\t\tQueryMetrics: pulumi.Bool(true),\n\t\t\t\tWriteMetrics: pulumi.Bool(false),\n\t\t\t\tQueryLogs:    pulumi.Bool(true),\n\t\t\t\tWriteLogs:    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.pulumi.scaleway.account.Project;\nimport com.pulumi.scaleway.account.ProjectArgs;\nimport com.pulumi.scaleway.observability.Token;\nimport com.pulumi.scaleway.observability.TokenArgs;\nimport com.pulumi.scaleway.observability.inputs.TokenScopesArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = new Project(\"project\", ProjectArgs.builder()\n            .name(\"my-project\")\n            .build());\n\n        // Create a token that can read metrics and logs but not write\n        var main = new Token(\"main\", TokenArgs.builder()\n            .projectId(project.id())\n            .name(\"my-awesome-token\")\n            .scopes(TokenScopesArgs.builder()\n                .queryMetrics(true)\n                .writeMetrics(false)\n                .queryLogs(true)\n                .writeLogs(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project:\n    type: scaleway:account:Project\n    properties:\n      name: my-project\n  # Create a token that can read metrics and logs but not write\n  main:\n    type: scaleway:observability:Token\n    properties:\n      projectId: ${project.id}\n      name: my-awesome-token\n      scopes:\n        queryMetrics: true\n        writeMetrics: false\n        queryLogs: true\n        writeLogs: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a Cockpit token using the `{region}/{id}` format.\n\n```sh\n$ pulumi import scaleway:index/cockpitToken:CockpitToken main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Cockpit Token (Format ISO 8601)"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the token.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the Cockpit token is located.\n"
                },
                "scopes": {
                    "$ref": "#/types/scaleway:index/CockpitTokenScopes:CockpitTokenScopes",
                    "description": "Scopes allowed, each with default values:\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the token.\n",
                    "secret": true
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Cockpit Token (Format ISO 8601)"
                }
            },
            "required": [
                "createdAt",
                "name",
                "projectId",
                "scopes",
                "secretKey",
                "updatedAt"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the token.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": ") The ID of the Project the Cockpit is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": ") The region where the Cockpit token is located.\n",
                    "willReplaceOnChanges": true
                },
                "scopes": {
                    "$ref": "#/types/scaleway:index/CockpitTokenScopes:CockpitTokenScopes",
                    "description": "Scopes allowed, each with default values:\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CockpitToken resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Cockpit Token (Format ISO 8601)"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": ") The ID of the Project the Cockpit is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": ") The region where the Cockpit token is located.\n",
                        "willReplaceOnChanges": true
                    },
                    "scopes": {
                        "$ref": "#/types/scaleway:index/CockpitTokenScopes:CockpitTokenScopes",
                        "description": "Scopes allowed, each with default values:\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret key of the token.\n",
                        "secret": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Cockpit Token (Format ISO 8601)"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/cockpittoken.CockpitToken has been deprecated in favor of scaleway.observability/token.Token"
        },
        "scaleway:index/container:Container": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Container`\" pulumi-lang-dotnet=\"`scaleway.containers.Container`\" pulumi-lang-go=\"`containers.Container`\" pulumi-lang-python=\"`containers.Container`\" pulumi-lang-yaml=\"`scaleway.containers.Container`\" pulumi-lang-java=\"`scaleway.containers.Container`\"\u003e`scaleway.containers.Container`\u003c/span\u003e resource allows you to create and manage [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Serverless Containers [product documentation](https://www.scaleway.com/en/docs/serverless/containers/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/) for more information.\n\nFor more information on the limitations of Serverless Containers, refer to the [dedicated documentation](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    description: \"This container has a description.\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n    namespaceId: main.id,\n    image: \"nginx:latest\",\n    port: 80,\n    cpuLimit: 1024,\n    memoryLimitBytes: 2048000000,\n    minScale: 3,\n    maxScale: 5,\n    timeout: 600,\n    protocol: \"http1\",\n    commands: [\n        \"bash\",\n        \"-c\",\n        \"script.sh\",\n    ],\n    args: [\n        \"some\",\n        \"args\",\n    ],\n    environmentVariables: {\n        foo: \"var\",\n    },\n    secretEnvironmentVariables: {\n        key: \"secret\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    description=\"This container has a description.\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ],\n    namespace_id=main.id,\n    image=\"nginx:latest\",\n    port=80,\n    cpu_limit=1024,\n    memory_limit_bytes=2048000000,\n    min_scale=3,\n    max_scale=5,\n    timeout=600,\n    protocol=\"http1\",\n    commands=[\n        \"bash\",\n        \"-c\",\n        \"script.sh\",\n    ],\n    args=[\n        \"some\",\n        \"args\",\n    ],\n    environment_variables={\n        \"foo\": \"var\",\n    },\n    secret_environment_variables={\n        \"key\": \"secret\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        Description = \"This container has a description.\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n        NamespaceId = main.Id,\n        Image = \"nginx:latest\",\n        Port = 80,\n        CpuLimit = 1024,\n        MemoryLimitBytes = 2048000000,\n        MinScale = 3,\n        MaxScale = 5,\n        Timeout = 600,\n        Protocol = \"http1\",\n        Commands = new[]\n        {\n            \"bash\",\n            \"-c\",\n            \"script.sh\",\n        },\n        Args = new[]\n        {\n            \"some\",\n            \"args\",\n        },\n        EnvironmentVariables = \n        {\n            { \"foo\", \"var\" },\n        },\n        SecretEnvironmentVariables = \n        {\n            { \"key\", \"secret\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container\"),\n\t\t\tDescription: pulumi.String(\"This container has a description.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t\tNamespaceId:      main.ID(),\n\t\t\tImage:            pulumi.String(\"nginx:latest\"),\n\t\t\tPort:             pulumi.Int(80),\n\t\t\tCpuLimit:         pulumi.Int(1024),\n\t\t\tMemoryLimitBytes: pulumi.Int(2048000000),\n\t\t\tMinScale:         pulumi.Int(3),\n\t\t\tMaxScale:         pulumi.Int(5),\n\t\t\tTimeout:          pulumi.Int(600),\n\t\t\tProtocol:         pulumi.String(\"http1\"),\n\t\t\tCommands: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\tpulumi.String(\"script.sh\"),\n\t\t\t},\n\t\t\tArgs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"some\"),\n\t\t\t\tpulumi.String(\"args\"),\n\t\t\t},\n\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"var\"),\n\t\t\t},\n\t\t\tSecretEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\"key\": 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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .description(\"This container has a description.\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .namespaceId(main.id())\n            .image(\"nginx:latest\")\n            .port(80)\n            .cpuLimit(1024)\n            .memoryLimitBytes(2048000000)\n            .minScale(3)\n            .maxScale(5)\n            .timeout(600)\n            .protocol(\"http1\")\n            .commands(            \n                \"bash\",\n                \"-c\",\n                \"script.sh\")\n            .args(            \n                \"some\",\n                \"args\")\n            .environmentVariables(Map.of(\"foo\", \"var\"))\n            .secretEnvironmentVariables(Map.of(\"key\", \"secret\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container\n      description: This container has a description.\n      tags:\n        - tag1\n        - tag2\n      namespaceId: ${main.id}\n      image: nginx:latest\n      port: 80\n      cpuLimit: 1024\n      memoryLimitBytes: 2.048e+09\n      minScale: 3\n      maxScale: 5\n      timeout: 600\n      protocol: http1\n      commands:\n        - bash\n        - -c\n        - script.sh\n      args:\n        - some\n        - args\n      environmentVariables:\n        foo: var\n      secretEnvironmentVariables:\n        key: secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redeploy the container everytime an update is made\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = scaleway.registry.getNamespace({\n    name: \"my-registry\",\n});\nconst mainGetImage = main.then(main =\u003e scaleway.registry.getImage({\n    namespaceId: main.id,\n    name: \"nginx-1-29-2-alpine\",\n}));\nconst mainNamespace = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    namespaceId: mainNamespace.id,\n    image: Promise.all([main, mainGetImage, mainGetImage]).then(([main, mainGetImage, mainGetImage1]) =\u003e `${main.endpoint}/${mainGetImage.name}:${mainGetImage1.tags?.[0]}`),\n    port: 80,\n    registrySha256: std.timestamp({}).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.registry.get_namespace(name=\"my-registry\")\nmain_get_image = scaleway.registry.get_image(namespace_id=main.id,\n    name=\"nginx-1-29-2-alpine\")\nmain_namespace = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    namespace_id=main_namespace.id,\n    image=f\"{main.endpoint}/{main_get_image.name}:{main_get_image.tags[0]}\",\n    port=80,\n    registry_sha256=std.timestamp()[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = Scaleway.Registry.GetNamespace.Invoke(new()\n    {\n        Name = \"my-registry\",\n    });\n\n    var mainGetImage = Scaleway.Registry.GetImage.Invoke(new()\n    {\n        NamespaceId = main.Apply(getNamespaceResult =\u003e getNamespaceResult.Id),\n        Name = \"nginx-1-29-2-alpine\",\n    });\n\n    var mainNamespace = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        NamespaceId = mainNamespace.Id,\n        Image = Output.Tuple(main, mainGetImage, mainGetImage).Apply(values =\u003e\n        {\n            var main = values.Item1;\n            var mainGetImage = values.Item2;\n            var mainGetImage1 = values.Item3;\n            return $\"{main.Apply(getNamespaceResult =\u003e getNamespaceResult.Endpoint)}/{mainGetImage.Apply(getImageResult =\u003e getImageResult.Name)}:{mainGetImage1.Tags[0]}\";\n        }),\n        Port = 80,\n        RegistrySha256 = Std.Timestamp.Invoke().Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/registry\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := registry.LookupNamespace(ctx, \u0026registry.LookupNamespaceArgs{\n\t\t\tName: pulumi.StringRef(\"my-registry\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainGetImage, err := registry.GetImage(ctx, \u0026registry.GetImageArgs{\n\t\t\tNamespaceId: pulumi.StringRef(main.Id),\n\t\t\tName:        pulumi.StringRef(\"nginx-1-29-2-alpine\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainNamespace, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTimestamp, err := std.Timestamp(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:           pulumi.String(\"my-container\"),\n\t\t\tNamespaceId:    mainNamespace.ID(),\n\t\t\tImage:          pulumi.Sprintf(\"%v/%v:%v\", main.Endpoint, mainGetImage.Name, mainGetImage.Tags[0]),\n\t\t\tPort:           pulumi.Int(80),\n\t\t\tRegistrySha256: invokeTimestamp.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.scaleway.registry.RegistryFunctions;\nimport com.pulumi.scaleway.registry.inputs.GetNamespaceArgs;\nimport com.pulumi.scaleway.registry.inputs.GetImageArgs;\nimport com.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = RegistryFunctions.getNamespace(GetNamespaceArgs.builder()\n            .name(\"my-registry\")\n            .build());\n\n        final var mainGetImage = RegistryFunctions.getImage(GetImageArgs.builder()\n            .namespaceId(main.id())\n            .name(\"nginx-1-29-2-alpine\")\n            .build());\n\n        var mainNamespace = new Namespace(\"mainNamespace\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .namespaceId(mainNamespace.id())\n            .image(String.format(\"%s/%s:%s\", main.endpoint(),mainGetImage.name(),mainGetImage.tags()[0]))\n            .port(80)\n            .registrySha256(StdFunctions.timestamp(Map.ofEntries(\n            )).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mainNamespace:\n    type: scaleway:containers:Namespace\n    name: main\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container\n      namespaceId: ${mainNamespace.id}\n      image: ${main.endpoint}/${mainGetImage.name}:${mainGetImage.tags[0]}\n      port: 80 # At every update, timestamp() will trigger a change and redeploy the container, even though nothing else has changed.\n      registrySha256:\n        fn::invoke:\n          function: std:timestamp\n          arguments: {}\n          return: result\nvariables:\n  main:\n    fn::invoke:\n      function: scaleway:registry:getNamespace\n      arguments:\n        name: my-registry\n  mainGetImage:\n    fn::invoke:\n      function: scaleway:registry:getImage\n      arguments:\n        namespaceId: ${main.id}\n        name: nginx-1-29-2-alpine\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Redeploy the container when the image changes\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n// with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n// Ideally, you would create the namespace separately.\n// For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n// in the referenced namespace.\nconst main = new scaleway.registry.Namespace(\"main\", {name: \"some-unique-name\"});\nconst nginx = scaleway.registry.getImageOutput({\n    namespaceId: main.id,\n    name: \"nginx\",\n});\nconst nginxLatest = nginx.apply(nginx =\u003e scaleway.registry.getImageTagOutput({\n    imageId: nginx.id,\n    name: \"latest\",\n}));\nconst mainNamespace = new scaleway.containers.Namespace(\"main\", {name: \"my-container-namespace\"});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"nginx-latest\",\n    namespaceId: mainNamespace.id,\n    image: pulumi.all([nginx, nginxLatest]).apply(([nginx, nginxLatest]) =\u003e `${mainScalewayRegistryNamespace.endpoint}/${nginx.name}:${nginxLatest.name}`),\n    port: 80,\n    registrySha256: nginxLatest.apply(nginxLatest =\u003e nginxLatest.digest),\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n# with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n# Ideally, you would create the namespace separately.\n# For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n# in the referenced namespace.\nmain = scaleway.registry.Namespace(\"main\", name=\"some-unique-name\")\nnginx = scaleway.registry.get_image_output(namespace_id=main.id,\n    name=\"nginx\")\nnginx_latest = nginx.apply(lambda nginx: scaleway.registry.get_image_tag_output(image_id=nginx.id,\n    name=\"latest\"))\nmain_namespace = scaleway.containers.Namespace(\"main\", name=\"my-container-namespace\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"nginx-latest\",\n    namespace_id=main_namespace.id,\n    image=pulumi.Output.all(\n        nginx=nginx,\n        nginx_latest=nginx_latest\n).apply(lambda resolved_outputs: f\"{main_scaleway_registry_namespace['endpoint']}/{nginx.name}:{nginx_latest.name}\")\n,\n    port=80,\n    registry_sha256=nginx_latest.digest)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n    // with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n    // Ideally, you would create the namespace separately.\n    // For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n    // in the referenced namespace.\n    var main = new Scaleway.Registry.Namespace(\"main\", new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n    var nginx = Scaleway.Registry.GetImage.Invoke(new()\n    {\n        NamespaceId = main.Id,\n        Name = \"nginx\",\n    });\n\n    var nginxLatest = Scaleway.Registry.GetImageTag.Invoke(new()\n    {\n        ImageId = nginx.Apply(getImageResult =\u003e getImageResult.Id),\n        Name = \"latest\",\n    });\n\n    var mainNamespace = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"my-container-namespace\",\n    });\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"nginx-latest\",\n        NamespaceId = mainNamespace.Id,\n        Image = Output.Tuple(nginx, nginxLatest).Apply(values =\u003e\n        {\n            var nginx = values.Item1;\n            var nginxLatest = values.Item2;\n            return $\"{mainScalewayRegistryNamespace.Endpoint}/{nginx.Apply(getImageResult =\u003e getImageResult.Name)}:{nginxLatest.Apply(getImageTagResult =\u003e getImageTagResult.Name)}\";\n        }),\n        Port = 80,\n        RegistrySha256 = nginxLatest.Apply(getImageTagResult =\u003e getImageTagResult.Digest),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/registry\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n\t\t// with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n\t\t// Ideally, you would create the namespace separately.\n\t\t// For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n\t\t// in the referenced namespace.\n\t\tmain, err := registry.NewNamespace(ctx, \"main\", \u0026registry.NamespaceArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnginx := registry.GetImageOutput(ctx, registry.GetImageOutputArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tName:        pulumi.String(\"nginx\"),\n\t\t}, nil)\n\t\tnginxLatest := nginx.ApplyT(func(nginx registry.GetImageResult) (registry.GetImageTagResult, error) {\n\t\t\treturn registry.GetImageTagResult(interface{}(registry.GetImageTag(ctx, \u0026registry.GetImageTagArgs{\n\t\t\t\tImageId: nginx.Id,\n\t\t\t\tName:    pulumi.StringRef(pulumi.StringRef(\"latest\")),\n\t\t\t}, nil))), nil\n\t\t}).(registry.GetImageTagResultOutput)\n\t\tmainNamespace, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"my-container-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"nginx-latest\"),\n\t\t\tNamespaceId: mainNamespace.ID(),\n\t\t\tImage: pulumi.All(nginx, nginxLatest).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tnginx := _args[0].(registry.GetImageResult)\n\t\t\t\tnginxLatest := _args[1].(registry.GetImageTagResult)\n\t\t\t\treturn fmt.Sprintf(\"%v/%v:%v\", mainScalewayRegistryNamespace.Endpoint, nginx.Name, nginxLatest.Name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRegistrySha256: pulumi.String(nginxLatest.ApplyT(func(nginxLatest registry.GetImageTagResult) (*string, error) {\n\t\t\t\treturn \u0026nginxLatest.Digest, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.scaleway.registry.RegistryFunctions;\nimport com.pulumi.scaleway.registry.inputs.GetImageArgs;\nimport com.pulumi.scaleway.registry.inputs.GetImageTagArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n        // with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n        // Ideally, you would create the namespace separately.\n        // For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n        // in the referenced namespace.\n        var main = new com.pulumi.scaleway.registry.Namespace(\"main\", com.pulumi.scaleway.registry.NamespaceArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n        final var nginx = RegistryFunctions.getImage(GetImageArgs.builder()\n            .namespaceId(main.id())\n            .name(\"nginx\")\n            .build());\n\n        final var nginxLatest = nginx.applyValue(_nginx -\u003e RegistryFunctions.getImageTag(GetImageTagArgs.builder()\n            .imageId(_nginx.id())\n            .name(\"latest\")\n            .build()));\n\n        var mainNamespace = new com.pulumi.scaleway.containers.Namespace(\"mainNamespace\", com.pulumi.scaleway.containers.NamespaceArgs.builder()\n            .name(\"my-container-namespace\")\n            .build());\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"nginx-latest\")\n            .namespaceId(mainNamespace.id())\n            .image(Output.tuple(nginx, nginxLatest).applyValue(values -\u003e {\n                var nginx = values.t1;\n                var nginxLatest = values.t2;\n                return String.format(\"%s/%s:%s\", mainScalewayRegistryNamespace.endpoint(),nginx.name(),nginxLatest.name());\n            }))\n            .port(80)\n            .registrySha256(nginxLatest.applyValue(_nginxLatest -\u003e _nginxLatest.digest()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # When using mutable images (e.g., `latest` tag), you can use the `scaleway_registry_image_tag` data source along\n  # with the `registry_sha256` argument to trigger container redeployments when the image is updated.\n\n  # Ideally, you would create the namespace separately.\n  # For demonstration purposes, this example assumes the \"nginx:latest\" image is already available\n  # in the referenced namespace.\n  main:\n    type: scaleway:registry:Namespace\n    properties:\n      name: some-unique-name\n  mainNamespace:\n    type: scaleway:containers:Namespace\n    name: main\n    properties:\n      name: my-container-namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: nginx-latest\n      namespaceId: ${mainNamespace.id}\n      image: ${mainScalewayRegistryNamespace.endpoint}/${nginx.name}:${nginxLatest.name}\n      port: 80 # Whenever the `latest` tag of the `nginx` image is updated, the `registry_sha256` will change, triggering a redeployment of the container with the new image.\n      registrySha256: ${nginxLatest.digest}\nvariables:\n  nginx:\n    fn::invoke:\n      function: scaleway:registry:getImage\n      arguments:\n        namespaceId: ${main.id}\n        name: nginx\n  nginxLatest:\n    fn::invoke:\n      function: scaleway:registry:getImageTag\n      arguments:\n        imageId: ${nginx.id}\n        name: latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing authentication of private containers with IAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Project to be referenced in the IAM policy\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM resources\nconst containerAuth = new scaleway.iam.Application(\"container_auth\", {name: \"container-auth\"});\nconst accessPrivateContainers = new scaleway.iam.Policy(\"access_private_containers\", {\n    applicationId: containerAuth.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ContainersPrivateAccess\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: containerAuth.id});\n// Container resources\nconst _private = new scaleway.containers.Namespace(\"private\", {name: \"private-container-namespace\"});\nconst privateContainer = new scaleway.containers.Container(\"private\", {\n    namespaceId: _private.id,\n    image: \"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n    privacy: \"private\",\n});\nexport const secretKey = apiKey.secretKey;\nexport const containerEndpoint = privateContainer.domainName;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# Project to be referenced in the IAM policy\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM resources\ncontainer_auth = scaleway.iam.Application(\"container_auth\", name=\"container-auth\")\naccess_private_containers = scaleway.iam.Policy(\"access_private_containers\",\n    application_id=container_auth.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ContainersPrivateAccess\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=container_auth.id)\n# Container resources\nprivate = scaleway.containers.Namespace(\"private\", name=\"private-container-namespace\")\nprivate_container = scaleway.containers.Container(\"private\",\n    namespace_id=private.id,\n    image=\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n    privacy=\"private\")\npulumi.export(\"secretKey\", api_key.secret_key)\npulumi.export(\"containerEndpoint\", private_container.domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project to be referenced in the IAM policy\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM resources\n    var containerAuth = new Scaleway.Iam.Application(\"container_auth\", new()\n    {\n        Name = \"container-auth\",\n    });\n\n    var accessPrivateContainers = new Scaleway.Iam.Policy(\"access_private_containers\", new()\n    {\n        ApplicationId = containerAuth.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ContainersPrivateAccess\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = containerAuth.Id,\n    });\n\n    // Container resources\n    var @private = new Scaleway.Containers.Namespace(\"private\", new()\n    {\n        Name = \"private-container-namespace\",\n    });\n\n    var privateContainer = new Scaleway.Containers.Container(\"private\", new()\n    {\n        NamespaceId = @private.Id,\n        Image = \"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\",\n        Privacy = \"private\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"secretKey\"] = apiKey.SecretKey,\n        [\"containerEndpoint\"] = privateContainer.DomainName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project to be referenced in the IAM policy\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM resources\n\t\tcontainerAuth, err := iam.NewApplication(ctx, \"container_auth\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"container-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"access_private_containers\", \u0026iam.PolicyArgs{\n\t\t\tApplicationId: containerAuth.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ContainersPrivateAccess\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: containerAuth.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Container resources\n\t\tprivate, err := containers.NewNamespace(ctx, \"private\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"private-container-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateContainer, err := containers.NewContainer(ctx, \"private\", \u0026containers.ContainerArgs{\n\t\t\tNamespaceId: private.ID(),\n\t\t\tImage:       pulumi.String(\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"secretKey\", apiKey.SecretKey)\n\t\tctx.Export(\"containerEndpoint\", privateContainer.DomainName)\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project to be referenced in the IAM policy\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM resources\n        var containerAuth = new Application(\"containerAuth\", ApplicationArgs.builder()\n            .name(\"container-auth\")\n            .build());\n\n        var accessPrivateContainers = new Policy(\"accessPrivateContainers\", PolicyArgs.builder()\n            .applicationId(containerAuth.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ContainersPrivateAccess\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(containerAuth.id())\n            .build());\n\n        // Container resources\n        var private_ = new Namespace(\"private\", NamespaceArgs.builder()\n            .name(\"private-container-namespace\")\n            .build());\n\n        var privateContainer = new Container(\"privateContainer\", ContainerArgs.builder()\n            .namespaceId(private_.id())\n            .image(\"rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\")\n            .privacy(\"private\")\n            .build());\n\n        ctx.export(\"secretKey\", apiKey.secretKey());\n        ctx.export(\"containerEndpoint\", privateContainer.domainName());\n    }\n}\n```\n```yaml\nresources:\n  # IAM resources\n  containerAuth:\n    type: scaleway:iam:Application\n    name: container_auth\n    properties:\n      name: container-auth\n  accessPrivateContainers:\n    type: scaleway:iam:Policy\n    name: access_private_containers\n    properties:\n      applicationId: ${containerAuth.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ContainersPrivateAccess\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${containerAuth.id}\n  # Container resources\n  private:\n    type: scaleway:containers:Namespace\n    properties:\n      name: private-container-namespace\n  privateContainer:\n    type: scaleway:containers:Container\n    name: private\n    properties:\n      namespaceId: ${private.id}\n      image: rg.fr-par.scw.cloud/my-registry-ns/my-image:latest\n      privacy: private\nvariables:\n  # Project to be referenced in the IAM policy\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  # Output the secret key and the container's endpoint for the curl command\n  secretKey: ${apiKey.secretKey}\n  containerEndpoint: ${privateContainer.domainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Protocols\n\nThe following protocols are supported:\n\n* \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e: HTTP/2 over TCP.\n* \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e: Hypertext Transfer Protocol.\n\n\u003e **Important:** Refer to the official [Apache documentation](https://httpd.apache.org/docs/2.4/howto/http2.html) for more information.\n\n## Privacy\n\nBy default, creating a container will make it \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e, meaning that anybody knowing the endpoint can execute it.\n\nA container can be made \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e with the privacy parameter.\n\nRefer to the [technical information](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8) for more information on container authentication.\n\n## Memory and vCPUs configuration\n\nThe vCPU represents a portion of the underlying, physical CPU that is assigned to a particular virtual machine (VM).\n\nYou can determine the computing resources to allocate to each container.\n\nThe \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e must correspond with the right amount of vCPU. Refer to the table below to determine the right memory/vCPU combination.\n\n| Memory (in MB) | vCPU |\n|----------------|------|\n| 128            | 70m  |\n| 256            | 140m |\n| 512            | 280m |\n| 1024           | 560m |\n| 2048           | 1120 |\n| 3072           | 1680 |\n| 4096           | 2240 |\n\n~\u003e**Important:** Make sure to select the right resources, as you will be billed based on compute usage over time and the number of Containers executions.\nRefer to the [Serverless Containers pricing](https://www.scaleway.com/en/docs/faq/serverless-containers/#prices) for more information.\n\n## Health check configuration\n\nCustom health checks can be configured on the container.\n\nIt's possible to specify the HTTP path that the probe will listen to and the number of failures before considering the container as unhealthy.\nDuring a deployment, if a newly created container fails to pass the health check, the deployment is aborted.\nAs a result, lowering this value can help to reduce the time it takes to detect a failed deployment.\nThe period between health checks is also configurable.\n\nExample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Container(\"main\", {\n    name: \"my-container\",\n    namespaceId: mainScalewayContainerNamespace.id,\n    livenessProbe: {\n        http: {\n            path: \"/ping\",\n        },\n        failureThreshold: 40,\n        interval: \"5s\",\n        timeout: \"1m\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Container(\"main\",\n    name=\"my-container\",\n    namespace_id=main_scaleway_container_namespace[\"id\"],\n    liveness_probe={\n        \"http\": {\n            \"path\": \"/ping\",\n        },\n        \"failure_threshold\": 40,\n        \"interval\": \"5s\",\n        \"timeout\": \"1m\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container\",\n        NamespaceId = mainScalewayContainerNamespace.Id,\n        LivenessProbe = new Scaleway.Containers.Inputs.ContainerLivenessProbeArgs\n        {\n            Http = new Scaleway.Containers.Inputs.ContainerLivenessProbeHttpArgs\n            {\n                Path = \"/ping\",\n            },\n            FailureThreshold = 40,\n            Interval = \"5s\",\n            Timeout = \"1m\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container\"),\n\t\t\tNamespaceId: pulumi.Any(mainScalewayContainerNamespace.Id),\n\t\t\tLivenessProbe: \u0026containers.ContainerLivenessProbeArgs{\n\t\t\t\tHttp: \u0026containers.ContainerLivenessProbeHttpArgs{\n\t\t\t\t\tPath: pulumi.String(\"/ping\"),\n\t\t\t\t},\n\t\t\t\tFailureThreshold: pulumi.Int(40),\n\t\t\t\tInterval:         pulumi.String(\"5s\"),\n\t\t\t\tTimeout:          pulumi.String(\"1m\"),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerLivenessProbeArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerLivenessProbeHttpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Container(\"main\", ContainerArgs.builder()\n            .name(\"my-container\")\n            .namespaceId(mainScalewayContainerNamespace.id())\n            .livenessProbe(ContainerLivenessProbeArgs.builder()\n                .http(ContainerLivenessProbeHttpArgs.builder()\n                    .path(\"/ping\")\n                    .build())\n                .failureThreshold(40)\n                .interval(\"5s\")\n                .timeout(\"1m\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Container\n    properties:\n      name: my-container\n      namespaceId: ${mainScalewayContainerNamespace.id}\n      livenessProbe:\n        http:\n          path: /ping\n        failureThreshold: 40\n        interval: 5s\n        timeout: 1m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n~\u003e**Important:** Another probe type can be set to TCP with the API, but currently the SDK has not been updated with this parameter.\nThis is why the only probe that can be used here is the HTTP probe.\nRefer to the [Serverless Containers pricing](https://www.scaleway.com/en/docs/faq/serverless-containers/#prices) for more information.\n\n## Scaling option configuration\n\nScaling option block configuration allows you to choose which parameter will scale up/down containers.\nOptions are number of concurrent requests, CPU or memory usage.\n\nExample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Container(\"main\", {\n    name: \"my-container-02\",\n    namespaceId: mainScalewayContainerNamespace.id,\n    scalingOptions: [{\n        concurrentRequestsThreshold: 15,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Container(\"main\",\n    name=\"my-container-02\",\n    namespace_id=main_scaleway_container_namespace[\"id\"],\n    scaling_options=[{\n        \"concurrent_requests_threshold\": 15,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container-02\",\n        NamespaceId = mainScalewayContainerNamespace.Id,\n        ScalingOptions = new[]\n        {\n            new Scaleway.Containers.Inputs.ContainerScalingOptionArgs\n            {\n                ConcurrentRequestsThreshold = 15,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container-02\"),\n\t\t\tNamespaceId: pulumi.Any(mainScalewayContainerNamespace.Id),\n\t\t\tScalingOptions: containers.ContainerScalingOptionArray{\n\t\t\t\t\u0026containers.ContainerScalingOptionArgs{\n\t\t\t\t\tConcurrentRequestsThreshold: pulumi.Int(15),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.inputs.ContainerScalingOptionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Container(\"main\", ContainerArgs.builder()\n            .name(\"my-container-02\")\n            .namespaceId(mainScalewayContainerNamespace.id())\n            .scalingOptions(ContainerScalingOptionArgs.builder()\n                .concurrentRequestsThreshold(15)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Container\n    properties:\n      name: my-container-02\n      namespaceId: ${mainScalewayContainerNamespace.id}\n      scalingOptions:\n        - concurrentRequestsThreshold: 15\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n~\u003e**Important**: A maximum of one of these parameters may be set. Also, when \u003cspan pulumi-lang-nodejs=\"`cpuUsageThreshold`\" pulumi-lang-dotnet=\"`CpuUsageThreshold`\" pulumi-lang-go=\"`cpuUsageThreshold`\" pulumi-lang-python=\"`cpu_usage_threshold`\" pulumi-lang-yaml=\"`cpuUsageThreshold`\" pulumi-lang-java=\"`cpuUsageThreshold`\"\u003e`cpuUsageThreshold`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryUsageThreshold`\" pulumi-lang-dotnet=\"`MemoryUsageThreshold`\" pulumi-lang-go=\"`memoryUsageThreshold`\" pulumi-lang-python=\"`memory_usage_threshold`\" pulumi-lang-yaml=\"`memoryUsageThreshold`\" pulumi-lang-java=\"`memoryUsageThreshold`\"\u003e`memoryUsageThreshold`\u003c/span\u003e are used, \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e can't be set to 0.\nRefer to the [API Reference](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-create-a-new-container) for more information.\n\n## Import\n\nContainers can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/container:Container main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container.\n"
                },
                "cronStatus": {
                    "type": "string",
                    "description": "The cron status of the container.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                    "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                },
                "description": {
                    "type": "string",
                    "description": "The description of the container.\n"
                },
                "domainName": {
                    "type": "string",
                    "description": "The native domain name of the container\n",
                    "deprecationMessage": "This attribute will be removed in the future, please use\u003cspan pulumi-lang-nodejs=\" publicEndpoint \" pulumi-lang-dotnet=\" PublicEndpoint \" pulumi-lang-go=\" publicEndpoint \" pulumi-lang-python=\" public_endpoint \" pulumi-lang-yaml=\" publicEndpoint \" pulumi-lang-java=\" publicEndpoint \"\u003e publicEndpoint \u003c/span\u003einstead"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                },
                "errorMessage": {
                    "type": "string",
                    "description": "The error message of the container.\n"
                },
                "healthChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ContainerHealthCheck:ContainerHealthCheck"
                    },
                    "description": "Health check configuration block of the container.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                },
                "httpsConnectionsOnly": {
                    "type": "boolean",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                },
                "image": {
                    "type": "string",
                    "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/scaleway:index/ContainerLivenessProbe:ContainerLivenessProbe",
                    "description": "Defines how to check if the container is running.\n"
                },
                "localStorageLimit": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                },
                "localStorageLimitBytes": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in bytes).\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this container can scale to.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                },
                "memoryLimitBytes": {
                    "type": "integer",
                    "description": "The memory resources in bytes to allocate to each container.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of container instances running continuously.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Containers namespace ID of the container.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port to expose the container.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                },
                "publicEndpoint": {
                    "type": "string",
                    "description": "The native domain name of the container\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the container was created.\n"
                },
                "registryImage": {
                    "type": "string",
                    "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                    "deprecationMessage": "Please use image instead"
                },
                "registrySha256": {
                    "type": "string",
                    "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the container.\n"
                },
                "scalingOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ContainerScalingOption:ContainerScalingOption"
                    },
                    "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                    "secret": true
                },
                "startupProbe": {
                    "$ref": "#/types/scaleway:index/ContainerStartupProbe:ContainerStartupProbe",
                    "description": "Defines how to check if the container has started successfully."
                },
                "status": {
                    "type": "string",
                    "description": "The container status.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the container.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "required": [
                "cpuLimit",
                "cronStatus",
                "domainName",
                "environmentVariables",
                "errorMessage",
                "healthChecks",
                "httpOption",
                "httpsConnectionsOnly",
                "image",
                "livenessProbe",
                "localStorageLimit",
                "localStorageLimitBytes",
                "maxScale",
                "memoryLimit",
                "memoryLimitBytes",
                "minScale",
                "name",
                "namespaceId",
                "port",
                "publicEndpoint",
                "registryImage",
                "sandbox",
                "scalingOptions",
                "status",
                "timeout"
            ],
            "inputProperties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                    "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                },
                "description": {
                    "type": "string",
                    "description": "The description of the container.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                },
                "healthChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ContainerHealthCheck:ContainerHealthCheck"
                    },
                    "description": "Health check configuration block of the container.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                },
                "httpsConnectionsOnly": {
                    "type": "boolean",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                },
                "image": {
                    "type": "string",
                    "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/scaleway:index/ContainerLivenessProbe:ContainerLivenessProbe",
                    "description": "Defines how to check if the container is running.\n"
                },
                "localStorageLimit": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                },
                "localStorageLimitBytes": {
                    "type": "integer",
                    "description": "Local storage limit of the container (in bytes).\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this container can scale to.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                },
                "memoryLimitBytes": {
                    "type": "integer",
                    "description": "The memory resources in bytes to allocate to each container.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of container instances running continuously.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Containers namespace ID of the container.\n",
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "The port to expose the container.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the container was created.\n",
                    "willReplaceOnChanges": true
                },
                "registryImage": {
                    "type": "string",
                    "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                    "deprecationMessage": "Please use image instead"
                },
                "registrySha256": {
                    "type": "string",
                    "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the container.\n"
                },
                "scalingOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ContainerScalingOption:ContainerScalingOption"
                    },
                    "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                    "secret": true
                },
                "startupProbe": {
                    "$ref": "#/types/scaleway:index/ContainerStartupProbe:ContainerStartupProbe",
                    "description": "Defines how to check if the container has started successfully."
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the container.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                }
            },
            "requiredInputs": [
                "namespaceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Container resources.\n",
                "properties": {
                    "args": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Arguments passed to the command specified in the \"command\" field. These override the default arguments from the container image, and behave like command-line parameters.\n"
                    },
                    "commands": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Command executed when the container starts. This overrides the default command defined in the container image. This is usually the main executable, or entry point script to run.\n"
                    },
                    "cpuLimit": {
                        "type": "integer",
                        "description": "The amount of vCPU computing resources to allocate to each container.\n"
                    },
                    "cronStatus": {
                        "type": "string",
                        "description": "The cron status of the container.\n"
                    },
                    "deploy": {
                        "type": "boolean",
                        "description": "Boolean indicating whether the container is in a production environment.\n\n\u003e **Important:** Containers are now automatically deployed and redeployed; setting this attribute will not have any effect.\n",
                        "deprecationMessage": "Containers are now automatically deployed or redeployed; setting this attribute will not have any effect."
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the container.\n"
                    },
                    "domainName": {
                        "type": "string",
                        "description": "The native domain name of the container\n",
                        "deprecationMessage": "This attribute will be removed in the future, please use\u003cspan pulumi-lang-nodejs=\" publicEndpoint \" pulumi-lang-dotnet=\" PublicEndpoint \" pulumi-lang-go=\" publicEndpoint \" pulumi-lang-python=\" public_endpoint \" pulumi-lang-yaml=\" publicEndpoint \" pulumi-lang-java=\" publicEndpoint \"\u003e publicEndpoint \u003c/span\u003einstead"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#environment-variables) of the container.\n"
                    },
                    "errorMessage": {
                        "type": "string",
                        "description": "The error message of the container.\n"
                    },
                    "healthChecks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/ContainerHealthCheck:ContainerHealthCheck"
                        },
                        "description": "Health check configuration block of the container.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" livenessProbe \" pulumi-lang-dotnet=\" LivenessProbe \" pulumi-lang-go=\" livenessProbe \" pulumi-lang-python=\" liveness_probe \" pulumi-lang-yaml=\" livenessProbe \" pulumi-lang-java=\" livenessProbe \"\u003e livenessProbe \u003c/span\u003einstead"
                    },
                    "httpOption": {
                        "type": "string",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`httpsConnectionsOnly`\" pulumi-lang-dotnet=\"`HttpsConnectionsOnly`\" pulumi-lang-go=\"`httpsConnectionsOnly`\" pulumi-lang-python=\"`https_connections_only`\" pulumi-lang-yaml=\"`httpsConnectionsOnly`\" pulumi-lang-java=\"`httpsConnectionsOnly`\"\u003e`httpsConnectionsOnly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpOption`\" pulumi-lang-dotnet=\"`HttpOption`\" pulumi-lang-go=\"`httpOption`\" pulumi-lang-python=\"`http_option`\" pulumi-lang-yaml=\"`httpOption`\" pulumi-lang-java=\"`httpOption`\"\u003e`httpOption`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" httpsConnectionsOnly \" pulumi-lang-dotnet=\" HttpsConnectionsOnly \" pulumi-lang-go=\" httpsConnectionsOnly \" pulumi-lang-python=\" https_connections_only \" pulumi-lang-yaml=\" httpsConnectionsOnly \" pulumi-lang-java=\" httpsConnectionsOnly \"\u003e httpsConnectionsOnly \u003c/span\u003einstead"
                    },
                    "httpsConnectionsOnly": {
                        "type": "boolean",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\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). 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"
                    },
                    "image": {
                        "type": "string",
                        "description": "The image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n"
                    },
                    "livenessProbe": {
                        "$ref": "#/types/scaleway:index/ContainerLivenessProbe:ContainerLivenessProbe",
                        "description": "Defines how to check if the container is running.\n"
                    },
                    "localStorageLimit": {
                        "type": "integer",
                        "description": "Local storage limit of the container (in MB)\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`localStorageLimitBytes`\" pulumi-lang-dotnet=\"`LocalStorageLimitBytes`\" pulumi-lang-go=\"`localStorageLimitBytes`\" pulumi-lang-python=\"`local_storage_limit_bytes`\" pulumi-lang-yaml=\"`localStorageLimitBytes`\" pulumi-lang-java=\"`localStorageLimitBytes`\"\u003e`localStorageLimitBytes`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`localStorageLimit`\" pulumi-lang-dotnet=\"`LocalStorageLimit`\" pulumi-lang-go=\"`localStorageLimit`\" pulumi-lang-python=\"`local_storage_limit`\" pulumi-lang-yaml=\"`localStorageLimit`\" pulumi-lang-java=\"`localStorageLimit`\"\u003e`localStorageLimit`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" localStorageLimitBytes \" pulumi-lang-dotnet=\" LocalStorageLimitBytes \" pulumi-lang-go=\" localStorageLimitBytes \" pulumi-lang-python=\" local_storage_limit_bytes \" pulumi-lang-yaml=\" localStorageLimitBytes \" pulumi-lang-java=\" localStorageLimitBytes \"\u003e localStorageLimitBytes \u003c/span\u003einstead"
                    },
                    "localStorageLimitBytes": {
                        "type": "integer",
                        "description": "Local storage limit of the container (in bytes).\n"
                    },
                    "maxScale": {
                        "type": "integer",
                        "description": "The maximum number of instances this container can scale to.\n"
                    },
                    "memoryLimit": {
                        "type": "integer",
                        "description": "The memory resources in MB to allocate to each container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`memoryLimit`\" pulumi-lang-dotnet=\"`MemoryLimit`\" pulumi-lang-go=\"`memoryLimit`\" pulumi-lang-python=\"`memory_limit`\" pulumi-lang-yaml=\"`memoryLimit`\" pulumi-lang-java=\"`memoryLimit`\"\u003e`memoryLimit`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`memoryLimitBytes`\" pulumi-lang-dotnet=\"`MemoryLimitBytes`\" pulumi-lang-go=\"`memoryLimitBytes`\" pulumi-lang-python=\"`memory_limit_bytes`\" pulumi-lang-yaml=\"`memoryLimitBytes`\" pulumi-lang-java=\"`memoryLimitBytes`\"\u003e`memoryLimitBytes`\u003c/span\u003e can be set at a time.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" memoryLimitBytes \" pulumi-lang-dotnet=\" MemoryLimitBytes \" pulumi-lang-go=\" memoryLimitBytes \" pulumi-lang-python=\" memory_limit_bytes \" pulumi-lang-yaml=\" memoryLimitBytes \" pulumi-lang-java=\" memoryLimitBytes \"\u003e memoryLimitBytes \u003c/span\u003einstead"
                    },
                    "memoryLimitBytes": {
                        "type": "integer",
                        "description": "The memory resources in bytes to allocate to each container.\n"
                    },
                    "minScale": {
                        "type": "integer",
                        "description": "The minimum number of container instances running continuously.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the container name.\n\n\u003e **Important** Updating 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 will recreate the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The Containers namespace ID of the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "The port to expose the container.\n"
                    },
                    "privacy": {
                        "type": "string",
                        "description": "The privacy type defines the way to authenticate to your container. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-containers/#protocol-9dd4c8).\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the Private Network the container is connected to.\n\nNote that if you want to use your own configuration, you must consult our configuration [restrictions](https://www.scaleway.com/en/docs/serverless-containers/reference-content/containers-limitations/#configuration-restrictions) section.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "The communication [protocol](https://www.scaleway.com/en/developers/api/serverless-containers/#path-containers-update-an-existing-container) \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`h2c`\" pulumi-lang-dotnet=\"`H2c`\" pulumi-lang-go=\"`h2c`\" pulumi-lang-python=\"`h2c`\" pulumi-lang-yaml=\"`h2c`\" pulumi-lang-java=\"`h2c`\"\u003e`h2c`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http1`\" pulumi-lang-dotnet=\"`Http1`\" pulumi-lang-go=\"`http1`\" pulumi-lang-python=\"`http1`\" pulumi-lang-yaml=\"`http1`\" pulumi-lang-java=\"`http1`\"\u003e`http1`\u003c/span\u003e.\n"
                    },
                    "publicEndpoint": {
                        "type": "string",
                        "description": "The native domain name of the container\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the container was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryImage": {
                        "type": "string",
                        "description": "The registry image address (e.g., `rg.fr-par.scw.cloud/$NAMESPACE/$IMAGE`)\n\n- \u003e **Important:** Exactly 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 \u003cspan pulumi-lang-nodejs=\"`registryImage`\" pulumi-lang-dotnet=\"`RegistryImage`\" pulumi-lang-go=\"`registryImage`\" pulumi-lang-python=\"`registry_image`\" pulumi-lang-yaml=\"`registryImage`\" pulumi-lang-java=\"`registryImage`\"\u003e`registryImage`\u003c/span\u003e must be set.\n",
                        "deprecationMessage": "Please use image instead"
                    },
                    "registrySha256": {
                        "type": "string",
                        "description": "The sha256 of your source registry image, changing it will re-apply the deployment. Can be any string.\n"
                    },
                    "sandbox": {
                        "type": "string",
                        "description": "Execution environment of the container.\n"
                    },
                    "scalingOptions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/ContainerScalingOption:ContainerScalingOption"
                        },
                        "description": "Configuration block used to decide when to scale up or down. Possible values:\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [secret environment variables](https://www.scaleway.com/en/docs/serverless-containers/concepts/#secrets) of the container.\n",
                        "secret": true
                    },
                    "startupProbe": {
                        "$ref": "#/types/scaleway:index/ContainerStartupProbe:ContainerStartupProbe",
                        "description": "Defines how to check if the container has started successfully."
                    },
                    "status": {
                        "type": "string",
                        "description": "The container status.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the container.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The maximum amount of time in seconds your container can spend processing a request before being stopped. Default to \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e seconds.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/container.Container has been deprecated in favor of scaleway.containers/container.Container"
        },
        "scaleway:index/containerCron:ContainerCron": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Cron`\" pulumi-lang-dotnet=\"`scaleway.containers.Cron`\" pulumi-lang-go=\"`containers.Cron`\" pulumi-lang-python=\"`containers.Cron`\" pulumi-lang-yaml=\"`scaleway.containers.Cron`\" pulumi-lang-java=\"`scaleway.containers.Cron`\"\u003e`scaleway.containers.Cron`\u003c/span\u003e has been deprecated and will be removed in the future.\nPlease use \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Trigger`\" pulumi-lang-dotnet=\"`scaleway.containers.Trigger`\" pulumi-lang-go=\"`containers.Trigger`\" pulumi-lang-python=\"`containers.Trigger`\" pulumi-lang-yaml=\"`scaleway.containers.Trigger`\" pulumi-lang-java=\"`scaleway.containers.Trigger`\"\u003e`scaleway.containers.Trigger`\u003c/span\u003e with a cron configuration instead.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Cron`\" pulumi-lang-dotnet=\"`scaleway.containers.Cron`\" pulumi-lang-go=\"`containers.Cron`\" pulumi-lang-python=\"`containers.Cron`\" pulumi-lang-yaml=\"`scaleway.containers.Cron`\" pulumi-lang-java=\"`scaleway.containers.Cron`\"\u003e`scaleway.containers.Cron`\u003c/span\u003e resource allows you to create and manage CRON triggers for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers CRON triggers [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/add-trigger-to-a-container/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\nThe following command allows you to add a CRON trigger to a Serverless Container.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst mainContainer = new scaleway.containers.Container(\"main\", {\n    name: \"my-container-with-cron-tf\",\n    namespaceId: main.id,\n});\nconst mainCron = new scaleway.containers.Cron(\"main\", {\n    containerId: mainContainer.id,\n    name: \"my-cron-name\",\n    schedule: \"5 4 1 * *\",\n    args: JSON.stringify({\n        address: {\n            city: \"Paris\",\n            country: \"FR\",\n        },\n        age: 23,\n        firstName: \"John\",\n        isAlive: true,\n        lastName: \"Smith\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\nmain_container = scaleway.containers.Container(\"main\",\n    name=\"my-container-with-cron-tf\",\n    namespace_id=main.id)\nmain_cron = scaleway.containers.Cron(\"main\",\n    container_id=main_container.id,\n    name=\"my-cron-name\",\n    schedule=\"5 4 1 * *\",\n    args=json.dumps({\n        \"address\": {\n            \"city\": \"Paris\",\n            \"country\": \"FR\",\n        },\n        \"age\": 23,\n        \"firstName\": \"John\",\n        \"isAlive\": True,\n        \"lastName\": \"Smith\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        Name = \"my-container-with-cron-tf\",\n        NamespaceId = main.Id,\n    });\n\n    var mainCron = new Scaleway.Containers.Cron(\"main\", new()\n    {\n        ContainerId = mainContainer.Id,\n        Name = \"my-cron-name\",\n        Schedule = \"5 4 1 * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"address\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"city\"] = \"Paris\",\n                [\"country\"] = \"FR\",\n            },\n            [\"age\"] = 23,\n            [\"firstName\"] = \"John\",\n            [\"isAlive\"] = true,\n            [\"lastName\"] = \"Smith\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainContainer, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"my-container-with-cron-tf\"),\n\t\t\tNamespaceId: main.ID(),\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\"address\": map[string]interface{}{\n\t\t\t\t\"city\":    \"Paris\",\n\t\t\t\t\"country\": \"FR\",\n\t\t\t},\n\t\t\t\"age\":       23,\n\t\t\t\"firstName\": \"John\",\n\t\t\t\"isAlive\":   true,\n\t\t\t\"lastName\":  \"Smith\",\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 = containers.NewCron(ctx, \"main\", \u0026containers.CronArgs{\n\t\t\tContainerId: mainContainer.ID(),\n\t\t\tName:        pulumi.String(\"my-cron-name\"),\n\t\t\tSchedule:    pulumi.String(\"5 4 1 * *\"),\n\t\t\tArgs:        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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.Cron;\nimport com.pulumi.scaleway.containers.CronArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .name(\"my-container-with-cron-tf\")\n            .namespaceId(main.id())\n            .build());\n\n        var mainCron = new Cron(\"mainCron\", CronArgs.builder()\n            .containerId(mainContainer.id())\n            .name(\"my-cron-name\")\n            .schedule(\"5 4 1 * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"address\", jsonObject(\n                        jsonProperty(\"city\", \"Paris\"),\n                        jsonProperty(\"country\", \"FR\")\n                    )),\n                    jsonProperty(\"age\", 23),\n                    jsonProperty(\"firstName\", \"John\"),\n                    jsonProperty(\"isAlive\", true),\n                    jsonProperty(\"lastName\", \"Smith\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      name: my-container-with-cron-tf\n      namespaceId: ${main.id}\n  mainCron:\n    type: scaleway:containers:Cron\n    name: main\n    properties:\n      containerId: ${mainContainer.id}\n      name: my-cron-name\n      schedule: 5 4 1 * *\n      args:\n        fn::toJSON:\n          address:\n            city: Paris\n            country: FR\n          age: 23\n          firstName: John\n          isAlive: true\n          lastName: Smith\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer Cron can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/containerCron:ContainerCron main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                },
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                },
                "status": {
                    "type": "string",
                    "description": "The CRON status.\n"
                }
            },
            "required": [
                "args",
                "containerId",
                "name",
                "schedule",
                "status"
            ],
            "inputProperties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                },
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n",
                    "willReplaceOnChanges": true
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                }
            },
            "requiredInputs": [
                "args",
                "containerId",
                "schedule"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerCron resources.\n",
                "properties": {
                    "args": {
                        "type": "string",
                        "description": "The key-value mapping to define arguments that will be passed to your container’s event object\n"
                    },
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container to link to your CRON trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the container CRON trigger. If not provided, a random name is generated.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region\nin which the CRON trigger is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "schedule": {
                        "type": "string",
                        "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/containers/reference-content/cron-schedules/) for more information).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The CRON status.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/containercron.ContainerCron has been deprecated in favor of scaleway.containers/cron.Cron"
        },
        "scaleway:index/containerDomain:ContainerDomain": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Domain`\" pulumi-lang-dotnet=\"`scaleway.containers.Domain`\" pulumi-lang-go=\"`containers.Domain`\" pulumi-lang-python=\"`containers.Domain`\" pulumi-lang-yaml=\"`scaleway.containers.Domain`\" pulumi-lang-java=\"`scaleway.containers.Domain`\"\u003e`scaleway.containers.Domain`\u003c/span\u003e resource allows you to create and manage domain name bindings for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers domain [documentation](https://www.scaleway.com/en/docs/serverless-containers/how-to/add-a-custom-domain-to-a-container/) and the [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-domains-list-all-domain-name-bindings) for more information.\n\n## Example Usage\n\nThe commands below shows how to bind a custom domain name to a container.\n\n### Simple\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.containers.Container(\"app\", {});\nconst appDomain = new scaleway.containers.Domain(\"app\", {\n    containerId: app.id,\n    hostname: \"container.domain.tld\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.containers.Container(\"app\")\napp_domain = scaleway.containers.Domain(\"app\",\n    container_id=app.id,\n    hostname=\"container.domain.tld\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Containers.Container(\"app\");\n\n    var appDomain = new Scaleway.Containers.Domain(\"app\", new()\n    {\n        ContainerId = app.Id,\n        Hostname = \"container.domain.tld\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := containers.NewContainer(ctx, \"app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewDomain(ctx, \"app\", \u0026containers.DomainArgs{\n\t\t\tContainerId: app.ID(),\n\t\t\tHostname:    pulumi.String(\"container.domain.tld\"),\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.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.Domain;\nimport com.pulumi.scaleway.containers.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Container(\"app\");\n\n        var appDomain = new Domain(\"appDomain\", DomainArgs.builder()\n            .containerId(app.id())\n            .hostname(\"container.domain.tld\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:containers:Container\n  appDomain:\n    type: scaleway:containers:Domain\n    name: app\n    properties:\n      containerId: ${app.id}\n      hostname: container.domain.tld\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete example with domain\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {});\nconst app = new scaleway.containers.Container(\"app\", {\n    name: \"app\",\n    namespaceId: main.id,\n    image: \"nginx:latest\",\n    port: 80,\n    privacy: \"public\",\n    protocol: \"http1\",\n});\nconst appRecord = new scaleway.domain.Record(\"app\", {\n    dnsZone: \"scaleway-terraform.com\",\n    name: \"subdomain\",\n    type: \"CNAME\",\n    data: std.format({\n        input: \"%s.\",\n        args: [std.trimprefix({\n            input: app.publicEndpoint,\n            prefix: \"https://\",\n        }).result],\n    }).result,\n    ttl: 3600,\n});\nconst appDomain = new scaleway.containers.Domain(\"app\", {\n    containerId: app.id,\n    hostname: pulumi.interpolate`${appRecord.name}.${appRecord.dnsZone}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\")\napp = scaleway.containers.Container(\"app\",\n    name=\"app\",\n    namespace_id=main.id,\n    image=\"nginx:latest\",\n    port=80,\n    privacy=\"public\",\n    protocol=\"http1\")\napp_record = scaleway.domain.Record(\"app\",\n    dns_zone=\"scaleway-terraform.com\",\n    name=\"subdomain\",\n    type=\"CNAME\",\n    data=std.format(input=\"%s.\",\n        args=[std.trimprefix(input=app.public_endpoint,\n            prefix=\"https://\")[\"result\"]])[\"result\"],\n    ttl=3600)\napp_domain = scaleway.containers.Domain(\"app\",\n    container_id=app.id,\n    hostname=pulumi.Output.all(\n        name=app_record.name,\n        dns_zone=app_record.dns_zone\n).apply(lambda resolved_outputs: f\"{resolved_outputs['name']}.{resolved_outputs['dns_zone']}\")\n)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\");\n\n    var app = new Scaleway.Containers.Container(\"app\", new()\n    {\n        Name = \"app\",\n        NamespaceId = main.Id,\n        Image = \"nginx:latest\",\n        Port = 80,\n        Privacy = \"public\",\n        Protocol = \"http1\",\n    });\n\n    var appRecord = new Scaleway.Domain.Record(\"app\", new()\n    {\n        DnsZone = \"scaleway-terraform.com\",\n        Name = \"subdomain\",\n        Type = \"CNAME\",\n        Data = Std.Format.Invoke(new()\n        {\n            Input = \"%s.\",\n            Args = new[]\n            {\n                Std.Trimprefix.Invoke(new()\n                {\n                    Input = app.PublicEndpoint,\n                    Prefix = \"https://\",\n                }).Result,\n            },\n        }).Result,\n        Ttl = 3600,\n    });\n\n    var appDomain = new Scaleway.Containers.Domain(\"app\", new()\n    {\n        ContainerId = app.Id,\n        Hostname = Output.Tuple(appRecord.Name, appRecord.DnsZone).Apply(values =\u003e\n        {\n            var name = values.Item1;\n            var dnsZone = values.Item2;\n            return $\"{name}.{dnsZone}\";\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := containers.NewContainer(ctx, \"app\", \u0026containers.ContainerArgs{\n\t\t\tName:        pulumi.String(\"app\"),\n\t\t\tNamespaceId: main.ID(),\n\t\t\tImage:       pulumi.String(\"nginx:latest\"),\n\t\t\tPort:        pulumi.Int(80),\n\t\t\tPrivacy:     pulumi.String(\"public\"),\n\t\t\tProtocol:    pulumi.String(\"http1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, map[string]interface{}{\n\t\t\t\"input\": \"%s.\",\n\t\t\t\"args\": []interface{}{\n\t\t\t\tstd.Trimprefix(ctx, map[string]interface{}{\n\t\t\t\t\t\"input\":  app.PublicEndpoint,\n\t\t\t\t\t\"prefix\": \"https://\",\n\t\t\t\t}, nil).Result,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappRecord, err := domain.NewRecord(ctx, \"app\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"scaleway-terraform.com\"),\n\t\t\tName:    pulumi.String(\"subdomain\"),\n\t\t\tType:    pulumi.String(\"CNAME\"),\n\t\t\tData:    invokeFormat.Result,\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = containers.NewDomain(ctx, \"app\", \u0026containers.DomainArgs{\n\t\t\tContainerId: app.ID(),\n\t\t\tHostname: pulumi.All(appRecord.Name, appRecord.DnsZone).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tname := _args[0].(string)\n\t\t\t\tdnsZone := _args[1].(string)\n\t\t\t\treturn fmt.Sprintf(\"%v.%v\", name, dnsZone), 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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.scaleway.containers.Domain;\nimport com.pulumi.scaleway.containers.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\");\n\n        var app = new Container(\"app\", ContainerArgs.builder()\n            .name(\"app\")\n            .namespaceId(main.id())\n            .image(\"nginx:latest\")\n            .port(80)\n            .privacy(\"public\")\n            .protocol(\"http1\")\n            .build());\n\n        var appRecord = new Record(\"appRecord\", RecordArgs.builder()\n            .dnsZone(\"scaleway-terraform.com\")\n            .name(\"subdomain\")\n            .type(\"CNAME\")\n            .data(StdFunctions.format(Map.ofEntries(\n                Map.entry(\"input\", \"%s.\"),\n                Map.entry(\"args\", Arrays.asList(StdFunctions.trimprefix(Map.ofEntries(\n                    Map.entry(\"input\", app.publicEndpoint()),\n                    Map.entry(\"prefix\", \"https://\")\n                )).result()))\n            )).result())\n            .ttl(3600)\n            .build());\n\n        var appDomain = new Domain(\"appDomain\", DomainArgs.builder()\n            .containerId(app.id())\n            .hostname(Output.tuple(appRecord.name(), appRecord.dnsZone()).applyValue(values -\u003e {\n                var name = values.t1;\n                var dnsZone = values.t2;\n                return String.format(\"%s.%s\", name,dnsZone);\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n  app:\n    type: scaleway:containers:Container\n    properties:\n      name: app\n      namespaceId: ${main.id}\n      image: nginx:latest\n      port: 80\n      privacy: public\n      protocol: http1\n  appRecord:\n    type: scaleway:domain:Record\n    name: app\n    properties:\n      dnsZone: scaleway-terraform.com\n      name: subdomain\n      type: CNAME\n      data:\n        fn::invoke:\n          function: std:format\n          arguments:\n            input: '%s.'\n            args:\n              - fn::invoke:\n                  function: std:trimprefix\n                  arguments:\n                    input: ${app.publicEndpoint}\n                    prefix: https://\n                  return: result\n          return: result\n      ttl: 3600\n  appDomain:\n    type: scaleway:containers:Domain\n    name: app\n    properties:\n      containerId: ${app.id}\n      hostname: ${appRecord.name}.${appRecord.dnsZone}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer domain binding can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/containerDomain:ContainerDomain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the container exists.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Deprecated) The URL used to query the container.\n",
                    "deprecationMessage": "URL won't be displayed on v1"
                }
            },
            "required": [
                "containerId",
                "hostname",
                "url"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the container exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "containerId",
                "hostname"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerDomain resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container.\n",
                        "willReplaceOnChanges": true
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname with a CNAME record.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the container exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "url": {
                        "type": "string",
                        "description": "(Deprecated) The URL used to query the container.\n",
                        "deprecationMessage": "URL won't be displayed on v1"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/containerdomain.ContainerDomain has been deprecated in favor of scaleway.containers/domain.Domain"
        },
        "scaleway:index/containerNamespace:ContainerNamespace": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Namespace`\" pulumi-lang-dotnet=\"`scaleway.containers.Namespace`\" pulumi-lang-go=\"`containers.Namespace`\" pulumi-lang-python=\"`containers.Namespace`\" pulumi-lang-yaml=\"`scaleway.containers.Namespace`\" pulumi-lang-java=\"`scaleway.containers.Namespace`\"\u003e`scaleway.containers.Namespace`\u003c/span\u003e resource allows you to manage Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers namespace [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/create-manage-delete-containers-namespace/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-namespaces-list-all-your-namespaces) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {\n    name: \"main-container-namespace\",\n    description: \"Main container namespace\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\",\n    name=\"main-container-namespace\",\n    description=\"Main container namespace\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"main-container-namespace\",\n        Description = \"Main container namespace\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-container-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main container namespace\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\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.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-container-namespace\")\n            .description(\"Main container namespace\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n    properties:\n      name: main-container-namespace\n      description: Main container namespace\n      tags:\n        - tag1\n        - tag2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainers namespaces can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/containerNamespace:ContainerNamespace main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "destroyRegistry": {
                    "type": "boolean",
                    "description": "Destroy registry on deletion",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID with which the namespace is associated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "registryEndpoint": {
                    "type": "string",
                    "description": "(Deprecated) The registry endpoint of the namespace.\n",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "registryNamespaceId": {
                    "type": "string",
                    "description": "(Deprecated) The registry namespace ID of the namespace.\n",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "registryEndpoint",
                "registryNamespaceId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "destroyRegistry": {
                    "type": "boolean",
                    "description": "Destroy registry on deletion",
                    "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerNamespace resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the namespace.\n"
                    },
                    "destroyRegistry": {
                        "type": "boolean",
                        "description": "Destroy registry on deletion",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The environment variables of the namespace.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the Containers namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID with which the namespace is associated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryEndpoint": {
                        "type": "string",
                        "description": "(Deprecated) The registry endpoint of the namespace.\n",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "registryNamespaceId": {
                        "type": "string",
                        "description": "(Deprecated) The registry namespace ID of the namespace.\n",
                        "deprecationMessage": "A registry is no longer created alongside the namespace, it has to be handled separately."
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The secret environment variables of the namespace.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the namespace.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/containernamespace.ContainerNamespace has been deprecated in favor of scaleway.containers/namespace.Namespace"
        },
        "scaleway:index/containerToken:ContainerToken": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Token`\" pulumi-lang-dotnet=\"`scaleway.containers.Token`\" pulumi-lang-go=\"`containers.Token`\" pulumi-lang-python=\"`containers.Token`\" pulumi-lang-yaml=\"`scaleway.containers.Token`\" pulumi-lang-java=\"`scaleway.containers.Token`\"\u003e`scaleway.containers.Token`\u003c/span\u003e has been deprecated and will no longer be supported in v1 of the API.\nPlease use IAM authentication instead. You will find an implementation example in the IAM authentication section of the Container documentation.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Token`\" pulumi-lang-dotnet=\"`scaleway.containers.Token`\" pulumi-lang-go=\"`containers.Token`\" pulumi-lang-python=\"`containers.Token`\" pulumi-lang-yaml=\"`scaleway.containers.Token`\" pulumi-lang-java=\"`scaleway.containers.Token`\"\u003e`scaleway.containers.Token`\u003c/span\u003e resource allows you to create and manage authentication tokens for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers tokens [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/create-auth-token-from-console/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-tokens-list-all-tokens) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Namespace(\"main\", {name: \"test-container-token-ns\"});\nconst mainContainer = new scaleway.containers.Container(\"main\", {namespaceId: main.id});\n// Namespace Token\nconst namespace = new scaleway.containers.Token(\"namespace\", {\n    namespaceId: main.id,\n    expiresAt: \"2022-10-18T11:35:15+02:00\",\n});\n// Container Token\nconst container = new scaleway.containers.Token(\"container\", {containerId: mainContainer.id});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Namespace(\"main\", name=\"test-container-token-ns\")\nmain_container = scaleway.containers.Container(\"main\", namespace_id=main.id)\n# Namespace Token\nnamespace = scaleway.containers.Token(\"namespace\",\n    namespace_id=main.id,\n    expires_at=\"2022-10-18T11:35:15+02:00\")\n# Container Token\ncontainer = scaleway.containers.Token(\"container\", container_id=main_container.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Namespace(\"main\", new()\n    {\n        Name = \"test-container-token-ns\",\n    });\n\n    var mainContainer = new Scaleway.Containers.Container(\"main\", new()\n    {\n        NamespaceId = main.Id,\n    });\n\n    // Namespace Token\n    var @namespace = new Scaleway.Containers.Token(\"namespace\", new()\n    {\n        NamespaceId = main.Id,\n        ExpiresAt = \"2022-10-18T11:35:15+02:00\",\n    });\n\n    // Container Token\n    var container = new Scaleway.Containers.Token(\"container\", new()\n    {\n        ContainerId = mainContainer.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := containers.NewNamespace(ctx, \"main\", \u0026containers.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-container-token-ns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainContainer, err := containers.NewContainer(ctx, \"main\", \u0026containers.ContainerArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Namespace Token\n\t\t_, err = containers.NewToken(ctx, \"namespace\", \u0026containers.TokenArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tExpiresAt:   pulumi.String(\"2022-10-18T11:35:15+02:00\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Container Token\n\t\t_, err = containers.NewToken(ctx, \"container\", \u0026containers.TokenArgs{\n\t\t\tContainerId: mainContainer.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.pulumi.scaleway.containers.Namespace;\nimport com.pulumi.scaleway.containers.NamespaceArgs;\nimport com.pulumi.scaleway.containers.Container;\nimport com.pulumi.scaleway.containers.ContainerArgs;\nimport com.pulumi.scaleway.containers.Token;\nimport com.pulumi.scaleway.containers.TokenArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-container-token-ns\")\n            .build());\n\n        var mainContainer = new Container(\"mainContainer\", ContainerArgs.builder()\n            .namespaceId(main.id())\n            .build());\n\n        // Namespace Token\n        var namespace = new Token(\"namespace\", TokenArgs.builder()\n            .namespaceId(main.id())\n            .expiresAt(\"2022-10-18T11:35:15+02:00\")\n            .build());\n\n        // Container Token\n        var container = new Token(\"container\", TokenArgs.builder()\n            .containerId(mainContainer.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Namespace\n    properties:\n      name: test-container-token-ns\n  mainContainer:\n    type: scaleway:containers:Container\n    name: main\n    properties:\n      namespaceId: ${main.id}\n  # Namespace Token\n  namespace:\n    type: scaleway:containers:Token\n    properties:\n      namespaceId: ${main.id}\n      expiresAt: 2022-10-18T11:35:15+02:00\n  # Container Token\n  container:\n    type: scaleway:containers:Token\n    properties:\n      containerId: ${mainContainer.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTokens can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/containerToken:ContainerToken main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Containers namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The token.\n",
                    "secret": true
                }
            },
            "required": [
                "value"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Containers namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerToken resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container.\n\n\u003e **Important:** Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`containerId`\u003c/span\u003e must be set.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The expiration date of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The unique identifier of the Containers namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n\n\u003e **Important:** Updating any of the arguments above will recreate the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "value": {
                        "type": "string",
                        "description": "The token.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/containertoken.ContainerToken has been deprecated in favor of scaleway.containers/token.Token"
        },
        "scaleway:index/containerTrigger:ContainerTrigger": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.containers.Trigger`\" pulumi-lang-dotnet=\"`scaleway.containers.Trigger`\" pulumi-lang-go=\"`containers.Trigger`\" pulumi-lang-python=\"`containers.Trigger`\" pulumi-lang-yaml=\"`scaleway.containers.Trigger`\" pulumi-lang-java=\"`scaleway.containers.Trigger`\"\u003e`scaleway.containers.Trigger`\u003c/span\u003e resource allows you to create and manage triggers for Scaleway [Serverless Containers](https://www.scaleway.com/en/docs/serverless/containers/).\n\nRefer to the Containers triggers [documentation](https://www.scaleway.com/en/docs/serverless/containers/how-to/add-trigger-to-a-container/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-containers/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\n### SQS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-sqs-trigger\",\n    destinationConfig: {\n        httpPath: \"/\",\n        httpMethod: \"get\",\n    },\n    sqs: {\n        endpoint: mainScalewayMnqSqsQueue.sqsEndpoint,\n        queueUrl: mainScalewayMnqSqsQueue.url,\n        accessKey: mainScalewayMnqSqsCredentials.accessKey,\n        secretKey: mainScalewayMnqSqsCredentials.secretKey,\n        region: mainScalewayMnqSqs.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-sqs-trigger\",\n    destination_config={\n        \"http_path\": \"/\",\n        \"http_method\": \"get\",\n    },\n    sqs={\n        \"endpoint\": main_scaleway_mnq_sqs_queue[\"sqsEndpoint\"],\n        \"queue_url\": main_scaleway_mnq_sqs_queue[\"url\"],\n        \"access_key\": main_scaleway_mnq_sqs_credentials[\"accessKey\"],\n        \"secret_key\": main_scaleway_mnq_sqs_credentials[\"secretKey\"],\n        \"region\": main_scaleway_mnq_sqs[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-sqs-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/\",\n            HttpMethod = \"get\",\n        },\n        Sqs = new Scaleway.Containers.Inputs.TriggerSqsArgs\n        {\n            Endpoint = mainScalewayMnqSqsQueue.SqsEndpoint,\n            QueueUrl = mainScalewayMnqSqsQueue.Url,\n            AccessKey = mainScalewayMnqSqsCredentials.AccessKey,\n            SecretKey = mainScalewayMnqSqsCredentials.SecretKey,\n            Region = mainScalewayMnqSqs.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-sqs-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/\"),\n\t\t\t\tHttpMethod: pulumi.String(\"get\"),\n\t\t\t},\n\t\t\tSqs: \u0026containers.TriggerSqsArgs{\n\t\t\t\tEndpoint:  pulumi.Any(mainScalewayMnqSqsQueue.SqsEndpoint),\n\t\t\t\tQueueUrl:  pulumi.Any(mainScalewayMnqSqsQueue.Url),\n\t\t\t\tAccessKey: pulumi.Any(mainScalewayMnqSqsCredentials.AccessKey),\n\t\t\t\tSecretKey: pulumi.Any(mainScalewayMnqSqsCredentials.SecretKey),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqSqs.Region),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerSqsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-sqs-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/\")\n                .httpMethod(\"get\")\n                .build())\n            .sqs(TriggerSqsArgs.builder()\n                .endpoint(mainScalewayMnqSqsQueue.sqsEndpoint())\n                .queueUrl(mainScalewayMnqSqsQueue.url())\n                .accessKey(mainScalewayMnqSqsCredentials.accessKey())\n                .secretKey(mainScalewayMnqSqsCredentials.secretKey())\n                .region(mainScalewayMnqSqs.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-sqs-trigger\n      destinationConfig:\n        httpPath: /\n        httpMethod: get\n      sqs:\n        endpoint: ${mainScalewayMnqSqsQueue.sqsEndpoint}\n        queueUrl: ${mainScalewayMnqSqsQueue.url}\n        accessKey: ${mainScalewayMnqSqsCredentials.accessKey}\n        secretKey: ${mainScalewayMnqSqsCredentials.secretKey}\n        region: ${mainScalewayMnqSqs.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### NATS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-nats-trigger\",\n    destinationConfig: {\n        httpPath: \"/ping\",\n        httpMethod: \"get\",\n    },\n    nats: {\n        subject: \"TestSubject\",\n        serverUrls: [mainScalewayMnqNatsAccount.endpoint],\n        credentialsFileContent: mainScalewayMnqNatsCredentials.file,\n        region: mainScalewayMnqNatsAccount.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-nats-trigger\",\n    destination_config={\n        \"http_path\": \"/ping\",\n        \"http_method\": \"get\",\n    },\n    nats={\n        \"subject\": \"TestSubject\",\n        \"server_urls\": [main_scaleway_mnq_nats_account[\"endpoint\"]],\n        \"credentials_file_content\": main_scaleway_mnq_nats_credentials[\"file\"],\n        \"region\": main_scaleway_mnq_nats_account[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-nats-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/ping\",\n            HttpMethod = \"get\",\n        },\n        Nats = new Scaleway.Containers.Inputs.TriggerNatsArgs\n        {\n            Subject = \"TestSubject\",\n            ServerUrls = new[]\n            {\n                mainScalewayMnqNatsAccount.Endpoint,\n            },\n            CredentialsFileContent = mainScalewayMnqNatsCredentials.File,\n            Region = mainScalewayMnqNatsAccount.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-nats-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/ping\"),\n\t\t\t\tHttpMethod: pulumi.String(\"get\"),\n\t\t\t},\n\t\t\tNats: \u0026containers.TriggerNatsArgs{\n\t\t\t\tSubject: pulumi.String(\"TestSubject\"),\n\t\t\t\tServerUrls: pulumi.StringArray{\n\t\t\t\t\tmainScalewayMnqNatsAccount.Endpoint,\n\t\t\t\t},\n\t\t\t\tCredentialsFileContent: pulumi.Any(mainScalewayMnqNatsCredentials.File),\n\t\t\t\tRegion:                 pulumi.Any(mainScalewayMnqNatsAccount.Region),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerNatsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-nats-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/ping\")\n                .httpMethod(\"get\")\n                .build())\n            .nats(TriggerNatsArgs.builder()\n                .subject(\"TestSubject\")\n                .serverUrls(mainScalewayMnqNatsAccount.endpoint())\n                .credentialsFileContent(mainScalewayMnqNatsCredentials.file())\n                .region(mainScalewayMnqNatsAccount.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-nats-trigger\n      destinationConfig:\n        httpPath: /ping\n        httpMethod: get\n      nats:\n        subject: TestSubject\n        serverUrls:\n          - ${mainScalewayMnqNatsAccount.endpoint}\n        credentialsFileContent: ${mainScalewayMnqNatsCredentials.file}\n        region: ${mainScalewayMnqNatsAccount.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cron\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.containers.Trigger(\"main\", {\n    containerId: mainScalewayContainer.id,\n    name: \"my-cron-trigger\",\n    destinationConfig: {\n        httpPath: \"/patch/here\",\n        httpMethod: \"patch\",\n    },\n    cron: {\n        schedule: \"5 4 1 * *\",\n        timezone: \"Europe/Paris\",\n        body: \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n        headers: {\n            \"Content-Length\": \"45\",\n            \"Content-Type\": \"application/json\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.containers.Trigger(\"main\",\n    container_id=main_scaleway_container[\"id\"],\n    name=\"my-cron-trigger\",\n    destination_config={\n        \"http_path\": \"/patch/here\",\n        \"http_method\": \"patch\",\n    },\n    cron={\n        \"schedule\": \"5 4 1 * *\",\n        \"timezone\": \"Europe/Paris\",\n        \"body\": \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n        \"headers\": {\n            \"Content-Length\": \"45\",\n            \"Content-Type\": \"application/json\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Containers.Trigger(\"main\", new()\n    {\n        ContainerId = mainScalewayContainer.Id,\n        Name = \"my-cron-trigger\",\n        DestinationConfig = new Scaleway.Containers.Inputs.TriggerDestinationConfigArgs\n        {\n            HttpPath = \"/patch/here\",\n            HttpMethod = \"patch\",\n        },\n        Cron = new Scaleway.Containers.Inputs.TriggerCronArgs\n        {\n            Schedule = \"5 4 1 * *\",\n            Timezone = \"Europe/Paris\",\n            Body = \"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\",\n            Headers = \n            {\n                { \"Content-Length\", \"45\" },\n                { \"Content-Type\", \"application/json\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/containers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containers.NewTrigger(ctx, \"main\", \u0026containers.TriggerArgs{\n\t\t\tContainerId: pulumi.Any(mainScalewayContainer.Id),\n\t\t\tName:        pulumi.String(\"my-cron-trigger\"),\n\t\t\tDestinationConfig: \u0026containers.TriggerDestinationConfigArgs{\n\t\t\t\tHttpPath:   pulumi.String(\"/patch/here\"),\n\t\t\t\tHttpMethod: pulumi.String(\"patch\"),\n\t\t\t},\n\t\t\tCron: \u0026containers.TriggerCronArgs{\n\t\t\t\tSchedule: pulumi.String(\"5 4 1 * *\"),\n\t\t\t\tTimezone: pulumi.String(\"Europe/Paris\"),\n\t\t\t\tBody:     pulumi.String(\"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\"),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Length\": pulumi.String(\"45\"),\n\t\t\t\t\t\"Content-Type\":   pulumi.String(\"application/json\"),\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.scaleway.containers.Trigger;\nimport com.pulumi.scaleway.containers.TriggerArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerDestinationConfigArgs;\nimport com.pulumi.scaleway.containers.inputs.TriggerCronArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .containerId(mainScalewayContainer.id())\n            .name(\"my-cron-trigger\")\n            .destinationConfig(TriggerDestinationConfigArgs.builder()\n                .httpPath(\"/patch/here\")\n                .httpMethod(\"patch\")\n                .build())\n            .cron(TriggerCronArgs.builder()\n                .schedule(\"5 4 1 * *\")\n                .timezone(\"Europe/Paris\")\n                .body(\"{\\\"message\\\": \\\"This is the content to send to the container.\\\"}\")\n                .headers(Map.ofEntries(\n                    Map.entry(\"Content-Length\", \"45\"),\n                    Map.entry(\"Content-Type\", \"application/json\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:containers:Trigger\n    properties:\n      containerId: ${mainScalewayContainer.id}\n      name: my-cron-trigger\n      destinationConfig:\n        httpPath: /patch/here\n        httpMethod: patch\n      cron:\n        schedule: 5 4 1 * *\n        timezone: Europe/Paris\n        body: '{\"message\": \"This is the content to send to the container.\"}'\n        headers:\n          Content-Length: 45\n          Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer Triggers can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/containerTrigger:ContainerTrigger main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n"
                },
                "cron": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerCron:ContainerTriggerCron",
                    "description": "The configuration for the cron source of the trigger\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "destinationConfig": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerDestinationConfig:ContainerTriggerDestinationConfig",
                    "description": "The configuration of the destination to trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerNats:ContainerTriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "sqs": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerSqs:ContainerTriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the trigger.\n"
                }
            },
            "required": [
                "containerId",
                "destinationConfig",
                "name"
            ],
            "inputProperties": {
                "containerId": {
                    "type": "string",
                    "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n",
                    "willReplaceOnChanges": true
                },
                "cron": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerCron:ContainerTriggerCron",
                    "description": "The configuration for the cron source of the trigger\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "destinationConfig": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerDestinationConfig:ContainerTriggerDestinationConfig",
                    "description": "The configuration of the destination to trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerNats:ContainerTriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "sqs": {
                    "$ref": "#/types/scaleway:index/ContainerTriggerSqs:ContainerTriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the trigger.\n"
                }
            },
            "requiredInputs": [
                "containerId",
                "destinationConfig"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerTrigger resources.\n",
                "properties": {
                    "containerId": {
                        "type": "string",
                        "description": "The unique identifier of the container to create a trigger for.\n\n\u003e **Important:** Updates to this field will recreate the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "cron": {
                        "$ref": "#/types/scaleway:index/ContainerTriggerCron:ContainerTriggerCron",
                        "description": "The configuration for the cron source of the trigger\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the trigger.\n"
                    },
                    "destinationConfig": {
                        "$ref": "#/types/scaleway:index/ContainerTriggerDestinationConfig:ContainerTriggerDestinationConfig",
                        "description": "The configuration of the destination to trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                    },
                    "nats": {
                        "$ref": "#/types/scaleway:index/ContainerTriggerNats:ContainerTriggerNats",
                        "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sqs": {
                        "$ref": "#/types/scaleway:index/ContainerTriggerSqs:ContainerTriggerSqs",
                        "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the trigger.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/containertrigger.ContainerTrigger has been deprecated in favor of scaleway.containers/trigger.Trigger"
        },
        "scaleway:index/database:Database": {
            "description": "Creates and manages databases.\nFor more information, refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"my-new-database\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"my-new-database\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"my-new-database\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"my-new-database\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"my-new-database\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: my-new-database\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRDB Database can be imported using the `{region}/{id}/{DBNAME}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/database:Database rdb01_mydb fr-par/11111111-1111-1111-1111-111111111111/mydb\n```\n\n",
            "properties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n"
                },
                "managed": {
                    "type": "boolean",
                    "description": "Whether the database is managed or not.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-new-database`).\n"
                },
                "owner": {
                    "type": "string",
                    "description": "The name of the owner of the database.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "size": {
                    "type": "string",
                    "description": "Size of the database (in bytes).\n"
                }
            },
            "required": [
                "instanceId",
                "managed",
                "name",
                "owner",
                "size"
            ],
            "inputProperties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-new-database`).\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Database resources.\n",
                "properties": {
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database.\n",
                        "willReplaceOnChanges": true
                    },
                    "managed": {
                        "type": "boolean",
                        "description": "Whether the database is managed or not.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-new-database`).\n",
                        "willReplaceOnChanges": true
                    },
                    "owner": {
                        "type": "string",
                        "description": "The name of the owner of the database.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "string",
                        "description": "Size of the database (in bytes).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/database.Database has been deprecated in favor of scaleway.databases/database.Database"
        },
        "scaleway:index/databaseAcl:DatabaseAcl": {
            "description": "Creates and manages Scaleway Database instance authorized IPs.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/#acl-rules-allowed-ips).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainAcl = new scaleway.databases.Acl(\"main\", {\n    instanceId: main.id,\n    aclRules: [{\n        ip: \"1.2.3.4/32\",\n        description: \"foo\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_acl = scaleway.databases.Acl(\"main\",\n    instance_id=main.id,\n    acl_rules=[{\n        \"ip\": \"1.2.3.4/32\",\n        \"description\": \"foo\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainAcl = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        InstanceId = main.Id,\n        AclRules = new[]\n        {\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"1.2.3.4/32\",\n                Description = \"foo\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewAcl(ctx, \"main\", \u0026databases.AclArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tAclRules: databases.AclAclRuleArray{\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"foo\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Acl;\nimport com.pulumi.scaleway.databases.AclArgs;\nimport com.pulumi.scaleway.databases.inputs.AclAclRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainAcl = new Acl(\"mainAcl\", AclArgs.builder()\n            .instanceId(main.id())\n            .aclRules(AclAclRuleArgs.builder()\n                .ip(\"1.2.3.4/32\")\n                .description(\"foo\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainAcl:\n    type: scaleway:databases:Acl\n    name: main\n    properties:\n      instanceId: ${main.id}\n      aclRules:\n        - ip: 1.2.3.4/32\n          description: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple ACL Rules\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Acl(\"main\", {\n    instanceId: mainScalewayRdbInstance.id,\n    aclRules: [\n        {\n            ip: \"1.2.3.4/32\",\n            description: \"Office IP\",\n        },\n        {\n            ip: \"5.6.7.8/32\",\n            description: \"Home IP\",\n        },\n        {\n            ip: \"10.0.0.0/24\",\n            description: \"Internal network\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Acl(\"main\",\n    instance_id=main_scaleway_rdb_instance[\"id\"],\n    acl_rules=[\n        {\n            \"ip\": \"1.2.3.4/32\",\n            \"description\": \"Office IP\",\n        },\n        {\n            \"ip\": \"5.6.7.8/32\",\n            \"description\": \"Home IP\",\n        },\n        {\n            \"ip\": \"10.0.0.0/24\",\n            \"description\": \"Internal network\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        InstanceId = mainScalewayRdbInstance.Id,\n        AclRules = new[]\n        {\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"1.2.3.4/32\",\n                Description = \"Office IP\",\n            },\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"5.6.7.8/32\",\n                Description = \"Home IP\",\n            },\n            new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = \"10.0.0.0/24\",\n                Description = \"Internal network\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewAcl(ctx, \"main\", \u0026databases.AclArgs{\n\t\t\tInstanceId: pulumi.Any(mainScalewayRdbInstance.Id),\n\t\t\tAclRules: databases.AclAclRuleArray{\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"Office IP\"),\n\t\t\t\t},\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"5.6.7.8/32\"),\n\t\t\t\t\tDescription: pulumi.String(\"Home IP\"),\n\t\t\t\t},\n\t\t\t\t\u0026databases.AclAclRuleArgs{\n\t\t\t\t\tIp:          pulumi.String(\"10.0.0.0/24\"),\n\t\t\t\t\tDescription: pulumi.String(\"Internal network\"),\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.scaleway.databases.Acl;\nimport com.pulumi.scaleway.databases.AclArgs;\nimport com.pulumi.scaleway.databases.inputs.AclAclRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Acl(\"main\", AclArgs.builder()\n            .instanceId(mainScalewayRdbInstance.id())\n            .aclRules(            \n                AclAclRuleArgs.builder()\n                    .ip(\"1.2.3.4/32\")\n                    .description(\"Office IP\")\n                    .build(),\n                AclAclRuleArgs.builder()\n                    .ip(\"5.6.7.8/32\")\n                    .description(\"Home IP\")\n                    .build(),\n                AclAclRuleArgs.builder()\n                    .ip(\"10.0.0.0/24\")\n                    .description(\"Internal network\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Acl\n    properties:\n      instanceId: ${mainScalewayRdbInstance.id}\n      aclRules:\n        - ip: 1.2.3.4/32\n          description: Office IP\n        - ip: 5.6.7.8/32\n          description: Home IP\n        - ip: 10.0.0.0/24\n          description: Internal network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Dynamic ACL Rules with Variables\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\n// Map of allowed IPs with descriptions\nconst allowedIps = config.getObject\u003cRecord\u003cstring, string\u003e\u003e(\"allowedIps\") || {\n    \"1.2.3.4/32\": \"Office IP\",\n    \"10.0.0.0/24\": \"Internal network\",\n    \"5.6.7.8/32\": \"Home IP\",\n};\nconst main = new scaleway.databases.Acl(\"main\", {\n    aclRules: Object.entries(allowedIps).sort().map(([key, entry]) =\u003e ({\n        ip: key,\n        description: entry,\n    })),\n    instanceId: mainScalewayRdbInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\n# Map of allowed IPs with descriptions\nallowed_ips = config.get_object(\"allowedIps\")\nif allowed_ips is None:\n    allowed_ips = {\n        \"1.2.3.4/32\": \"Office IP\",\n        \"10.0.0.0/24\": \"Internal network\",\n        \"5.6.7.8/32\": \"Home IP\",\n    }\nmain = scaleway.databases.Acl(\"main\",\n    acl_rules=[{\n        \"ip\": key,\n        \"description\": entry,\n    } for key, entry in sorted(allowed_ips.items())],\n    instance_id=main_scaleway_rdb_instance[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    // Map of allowed IPs with descriptions\n    var allowedIps = config.GetObject\u003cDictionary\u003cstring, string\u003e\u003e(\"allowedIps\") ?? \n    {\n        { \"1.2.3.4/32\", \"Office IP\" },\n        { \"10.0.0.0/24\", \"Internal network\" },\n        { \"5.6.7.8/32\", \"Home IP\" },\n    };\n    var main = new Scaleway.Databases.Acl(\"main\", new()\n    {\n        AclRules = allowedIps.Select(pair =\u003e new { pair.Key, pair.Value }).Select(entry =\u003e \n        {\n            return new Scaleway.Databases.Inputs.AclAclRuleArgs\n            {\n                Ip = key,\n                Description = entry,\n            };\n        }).ToList(),\n        InstanceId = mainScalewayRdbInstance.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databaseAcl:DatabaseAcl acl01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "aclRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseAclAclRule:DatabaseAclAclRule"
                    },
                    "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n"
                }
            },
            "required": [
                "aclRules",
                "instanceId"
            ],
            "inputProperties": {
                "aclRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseAclAclRule:DatabaseAclAclRule"
                    },
                    "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "aclRules",
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseAcl resources.\n",
                "properties": {
                    "aclRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DatabaseAclAclRule:DatabaseAclAclRule"
                        },
                        "description": "A list of ACLs (structure is described below)\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resource replaces **all** ACL rules for the given instance. Multiple \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e resources targeting the same \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will conflict with each other. Use multiple \u003cspan pulumi-lang-nodejs=\"`aclRules`\" pulumi-lang-dotnet=\"`AclRules`\" pulumi-lang-go=\"`aclRules`\" pulumi-lang-python=\"`acl_rules`\" pulumi-lang-yaml=\"`aclRules`\" pulumi-lang-java=\"`aclRules`\"\u003e`aclRules`\u003c/span\u003e blocks within a single resource instead.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the Database ACL.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the Database Instance should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databaseacl.DatabaseAcl has been deprecated in favor of scaleway.databases/acl.Acl"
        },
        "scaleway:index/databaseBackup:DatabaseBackup": {
            "description": "Creates and manages database backups.\nFor more information, refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"database\",\n});\nconst mainDatabaseBackup = new scaleway.databases.DatabaseBackup(\"main\", {\n    instanceId: main.id,\n    databaseName: mainDatabase.name,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"database\")\nmain_database_backup = scaleway.databases.DatabaseBackup(\"main\",\n    instance_id=main.id,\n    database_name=main_database.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"database\",\n    });\n\n    var mainDatabaseBackup = new Scaleway.Databases.DatabaseBackup(\"main\", new()\n    {\n        InstanceId = main.Id,\n        DatabaseName = mainDatabase.Name,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDatabase, err := databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"database\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewDatabaseBackup(ctx, \"main\", \u0026databases.DatabaseBackupArgs{\n\t\t\tInstanceId:   main.ID(),\n\t\t\tDatabaseName: mainDatabase.Name,\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport com.pulumi.scaleway.databases.DatabaseBackup;\nimport com.pulumi.scaleway.databases.DatabaseBackupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"database\")\n            .build());\n\n        var mainDatabaseBackup = new DatabaseBackup(\"mainDatabaseBackup\", DatabaseBackupArgs.builder()\n            .instanceId(main.id())\n            .databaseName(mainDatabase.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: database\n  mainDatabaseBackup:\n    type: scaleway:databases:DatabaseBackup\n    name: main\n    properties:\n      instanceId: ${main.id}\n      databaseName: ${mainDatabase.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.DatabaseBackup(\"main\", {\n    instanceId: mainScalewayRdbInstance.id,\n    databaseName: mainScalewayRdbDatabase.name,\n    expiresAt: \"2022-06-16T07:48:44Z\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.DatabaseBackup(\"main\",\n    instance_id=main_scaleway_rdb_instance[\"id\"],\n    database_name=main_scaleway_rdb_database[\"name\"],\n    expires_at=\"2022-06-16T07:48:44Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.DatabaseBackup(\"main\", new()\n    {\n        InstanceId = mainScalewayRdbInstance.Id,\n        DatabaseName = mainScalewayRdbDatabase.Name,\n        ExpiresAt = \"2022-06-16T07:48:44Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewDatabaseBackup(ctx, \"main\", \u0026databases.DatabaseBackupArgs{\n\t\t\tInstanceId:   pulumi.Any(mainScalewayRdbInstance.Id),\n\t\t\tDatabaseName: pulumi.Any(mainScalewayRdbDatabase.Name),\n\t\t\tExpiresAt:    pulumi.String(\"2022-06-16T07:48:44Z\"),\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.scaleway.databases.DatabaseBackup;\nimport com.pulumi.scaleway.databases.DatabaseBackupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new DatabaseBackup(\"main\", DatabaseBackupArgs.builder()\n            .instanceId(mainScalewayRdbInstance.id())\n            .databaseName(mainScalewayRdbDatabase.name())\n            .expiresAt(\"2022-06-16T07:48:44Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:DatabaseBackup\n    properties:\n      instanceId: ${mainScalewayRdbInstance.id}\n      databaseName: ${mainScalewayRdbDatabase.name}\n      expiresAt: 2022-06-16T07:48:44Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabases can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databaseBackup:DatabaseBackup mybackup fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Creation date (Format ISO 8601).\n"
                },
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database of this backup."
                },
                "downloadUrl": {
                    "type": "string",
                    "description": "URL you can download the backup from (when exporting)."
                },
                "downloadUrlExpiresAt": {
                    "type": "string",
                    "description": "Expiration date of the download link (Format ISO 8601)."
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n"
                },
                "instanceName": {
                    "type": "string",
                    "description": "Name of the instance of the backup.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-database`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "sameRegion": {
                    "type": "boolean",
                    "description": "Whether the backup is stored in the same region as the source instance."
                },
                "size": {
                    "type": "integer",
                    "description": "Size of the backup (in bytes).\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the backup (creating, ready, restoring, deleting, error, exporting, locked)."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated date (Format ISO 8601).\n"
                }
            },
            "required": [
                "createdAt",
                "databaseName",
                "downloadUrl",
                "downloadUrlExpiresAt",
                "instanceId",
                "instanceName",
                "name",
                "sameRegion",
                "size",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database of this backup.",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-database`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "databaseName",
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseBackup resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Creation date (Format ISO 8601).\n"
                    },
                    "databaseName": {
                        "type": "string",
                        "description": "Name of the database of this backup.",
                        "willReplaceOnChanges": true
                    },
                    "downloadUrl": {
                        "type": "string",
                        "description": "URL you can download the backup from (when exporting)."
                    },
                    "downloadUrlExpiresAt": {
                        "type": "string",
                        "description": "Expiration date of the download link (Format ISO 8601)."
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Expiration date (Format ISO 8601).\n\n\u003e **Important:** \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed after being set.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the backup.\n",
                        "willReplaceOnChanges": true
                    },
                    "instanceName": {
                        "type": "string",
                        "description": "Name of the instance of the backup.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-database`).\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "sameRegion": {
                        "type": "boolean",
                        "description": "Whether the backup is stored in the same region as the source instance."
                    },
                    "size": {
                        "type": "integer",
                        "description": "Size of the backup (in bytes).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the backup (creating, ready, restoring, deleting, error, exporting, locked)."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Updated date (Format ISO 8601).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databasebackup.DatabaseBackup has been deprecated in favor of scaleway.databases/databasebackup.DatabaseBackup"
        },
        "scaleway:index/databaseInstance:DatabaseInstance": {
            "description": "Creates and manages Scaleway Database Instances.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Example Basic\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    encryptionAtRest: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Example Basic\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    encryption_at_rest=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Example Basic\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        EncryptionAtRest = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Example Basic\n\t\t_, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:             pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:         pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:           pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:      pulumi.Bool(true),\n\t\t\tDisableBackup:    pulumi.Bool(true),\n\t\t\tUserName:         pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:         pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tEncryptionAtRest: 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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Example Basic\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .encryptionAtRest(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Example Basic\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      encryptionAtRest: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Example Engine Upgrade\n// Initial creation with PostgreSQL 14\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"my-database\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nexport const upgradableVersions = main.upgradableVersions;\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Example Engine Upgrade\n# Initial creation with PostgreSQL 14\nmain = scaleway.databases.Instance(\"main\",\n    name=\"my-database\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npulumi.export(\"upgradableVersions\", main.upgradable_versions)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Example Engine Upgrade\n    // Initial creation with PostgreSQL 14\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"my-database\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"upgradableVersions\"] = main.UpgradableVersions,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Example Engine Upgrade\n\t\t// Initial creation with PostgreSQL 14\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"my-database\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"upgradableVersions\", main.UpgradableVersions)\n\t\treturn nil\n\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Example Engine Upgrade\n        // Initial creation with PostgreSQL 14\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"my-database\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        ctx.export(\"upgradableVersions\", main.upgradableVersions());\n    }\n}\n```\n```yaml\nresources:\n  ### Example Engine Upgrade\n\n  # Initial creation with PostgreSQL 14\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: my-database\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_user\n      password: thiZ_is_v\u0026ry_s3cret\noutputs:\n  # Check available versions for upgrade\n  upgradableVersions: ${main.upgradableVersions}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase Instance can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databaseInstance:DatabaseInstance rdb01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backupSameRegion": {
                    "type": "boolean",
                    "description": "Boolean to store logical backups in the same region as the database instance"
                },
                "backupScheduleFrequency": {
                    "type": "integer",
                    "description": "Backup schedule frequency in hours"
                },
                "backupScheduleRetention": {
                    "type": "integer",
                    "description": "Backup schedule retention in days"
                },
                "certificate": {
                    "type": "string",
                    "description": "Certificate of the Database Instance.\n"
                },
                "disableBackup": {
                    "type": "boolean",
                    "description": "Disable automated backup for the database instance"
                },
                "encryptionAtRest": {
                    "type": "boolean",
                    "description": "Enable or disable encryption at rest for the Database Instance.\n"
                },
                "endpointIp": {
                    "type": "string",
                    "description": "(Deprecated) The IP of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                    "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                },
                "endpointPort": {
                    "type": "integer",
                    "description": "(Deprecated) The port of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                    "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                },
                "engine": {
                    "type": "string",
                    "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                },
                "initSettings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set at database initialisation."
                },
                "isHaCluster": {
                    "type": "boolean",
                    "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "loadBalancer": {
                    "$ref": "#/types/scaleway:index/DatabaseInstanceLoadBalancer:DatabaseInstanceLoadBalancer",
                    "description": "List of Load Balancer endpoints of the Database Instance.\n"
                },
                "logsPolicy": {
                    "$ref": "#/types/scaleway:index/DatabaseInstanceLogsPolicy:DatabaseInstanceLogsPolicy",
                    "description": "Logs policy configuration"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the Database Instance is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseInstancePrivateIp:DatabaseInstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/DatabaseInstancePrivateNetwork:DatabaseInstancePrivateNetwork",
                    "description": "List of Private Networks endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n"
                },
                "readReplicas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseInstanceReadReplica:DatabaseInstanceReadReplica"
                    },
                    "description": "List of read replicas of the Database Instance.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Database Instance should be created.\n"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set on a running instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Database Instance.\n"
                },
                "upgradableVersions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseInstanceUpgradableVersion:DatabaseInstanceUpgradableVersion"
                    },
                    "description": "List of available engine versions for upgrade. Each version contains:\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                }
            },
            "required": [
                "backupSameRegion",
                "backupScheduleFrequency",
                "backupScheduleRetention",
                "certificate",
                "endpointIp",
                "endpointPort",
                "engine",
                "loadBalancer",
                "logsPolicy",
                "name",
                "nodeType",
                "organizationId",
                "privateIps",
                "projectId",
                "readReplicas",
                "settings",
                "upgradableVersions",
                "userName",
                "volumeSizeInGb"
            ],
            "inputProperties": {
                "backupSameRegion": {
                    "type": "boolean",
                    "description": "Boolean to store logical backups in the same region as the database instance"
                },
                "backupScheduleFrequency": {
                    "type": "integer",
                    "description": "Backup schedule frequency in hours"
                },
                "backupScheduleRetention": {
                    "type": "integer",
                    "description": "Backup schedule retention in days"
                },
                "disableBackup": {
                    "type": "boolean",
                    "description": "Disable automated backup for the database instance"
                },
                "encryptionAtRest": {
                    "type": "boolean",
                    "description": "Enable or disable encryption at rest for the Database Instance.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                },
                "initSettings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set at database initialisation.",
                    "willReplaceOnChanges": true
                },
                "isHaCluster": {
                    "type": "boolean",
                    "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                },
                "loadBalancer": {
                    "$ref": "#/types/scaleway:index/DatabaseInstanceLoadBalancer:DatabaseInstanceLoadBalancer",
                    "description": "List of Load Balancer endpoints of the Database Instance.\n"
                },
                "logsPolicy": {
                    "$ref": "#/types/scaleway:index/DatabaseInstanceLogsPolicy:DatabaseInstanceLogsPolicy",
                    "description": "Logs policy configuration"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Database Instance.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DatabaseInstancePrivateIp:DatabaseInstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/DatabaseInstancePrivateNetwork:DatabaseInstancePrivateNetwork",
                    "description": "List of Private Networks endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Database Instance should be created.\n",
                    "willReplaceOnChanges": true
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of engine settings to be set on a running instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Database Instance.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n",
                    "willReplaceOnChanges": true
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                }
            },
            "requiredInputs": [
                "nodeType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseInstance resources.\n",
                "properties": {
                    "backupSameRegion": {
                        "type": "boolean",
                        "description": "Boolean to store logical backups in the same region as the database instance"
                    },
                    "backupScheduleFrequency": {
                        "type": "integer",
                        "description": "Backup schedule frequency in hours"
                    },
                    "backupScheduleRetention": {
                        "type": "integer",
                        "description": "Backup schedule retention in days"
                    },
                    "certificate": {
                        "type": "string",
                        "description": "Certificate of the Database Instance.\n"
                    },
                    "disableBackup": {
                        "type": "boolean",
                        "description": "Disable automated backup for the database instance"
                    },
                    "encryptionAtRest": {
                        "type": "boolean",
                        "description": "Enable or disable encryption at rest for the Database Instance.\n"
                    },
                    "endpointIp": {
                        "type": "string",
                        "description": "(Deprecated) The IP of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                        "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                    },
                    "endpointPort": {
                        "type": "integer",
                        "description": "(Deprecated) The port of the Database Instance. Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute.\n",
                        "deprecationMessage": "Please use the\u003cspan pulumi-lang-nodejs=\" privateNetwork \" pulumi-lang-dotnet=\" PrivateNetwork \" pulumi-lang-go=\" privateNetwork \" pulumi-lang-python=\" private_network \" pulumi-lang-yaml=\" privateNetwork \" pulumi-lang-java=\" privateNetwork \"\u003e privateNetwork \u003c/span\u003eor the\u003cspan pulumi-lang-nodejs=\" loadBalancer \" pulumi-lang-dotnet=\" LoadBalancer \" pulumi-lang-go=\" loadBalancer \" pulumi-lang-python=\" load_balancer \" pulumi-lang-yaml=\" loadBalancer \" pulumi-lang-java=\" loadBalancer \"\u003e loadBalancer \u003c/span\u003eattribute"
                    },
                    "engine": {
                        "type": "string",
                        "description": "Database Instance's engine version name (e.g. `PostgreSQL-16`, `MySQL-8`).\n\n\u003e **Warning** Provider versions prior to `2.61.0` did not support engine upgrades. Changing the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e value in these versions would recreate the Database Instance **empty**, resulting in **data loss**. Ensure you are using provider version `\u003e= 2.61.0` before upgrading your Database Instance engine version.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e will perform a blue/green upgrade using `MajorUpgradeWorkflow`. This creates a new instance from a snapshot, migrates endpoints automatically, and updates the Terraform state with the new instance ID. The upgrade ensures minimal downtime but **any writes between the snapshot and the endpoint migration will be lost**. Use the \u003cspan pulumi-lang-nodejs=\"`upgradableVersions`\" pulumi-lang-dotnet=\"`UpgradableVersions`\" pulumi-lang-go=\"`upgradableVersions`\" pulumi-lang-python=\"`upgradable_versions`\" pulumi-lang-yaml=\"`upgradableVersions`\" pulumi-lang-java=\"`upgradableVersions`\"\u003e`upgradableVersions`\u003c/span\u003e computed attribute to check available versions for upgrade.\n\n\u003e **Note** The provider copies instance-level data managed outside \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Instance`\" pulumi-lang-dotnet=\"`scaleway.databases.Instance`\" pulumi-lang-go=\"`databases.Instance`\" pulumi-lang-python=\"`databases.Instance`\" pulumi-lang-yaml=\"`scaleway.databases.Instance`\" pulumi-lang-java=\"`scaleway.databases.Instance`\"\u003e`scaleway.databases.Instance`\u003c/span\u003e, such as ACL rules, to the upgraded instance during the engine upgrade. However, Terraform plans dependent resources before the blue/green upgrade returns the new instance ID. As a result, resources that reference the previous instance ID, such as \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.Acl`\" pulumi-lang-dotnet=\"`scaleway.databases.Acl`\" pulumi-lang-go=\"`databases.Acl`\" pulumi-lang-python=\"`databases.Acl`\" pulumi-lang-yaml=\"`scaleway.databases.Acl`\" pulumi-lang-java=\"`scaleway.databases.Acl`\"\u003e`scaleway.databases.Acl`\u003c/span\u003e, may require a second `pulumi up` to fully reconcile their Terraform state with the upgraded instance.\n"
                    },
                    "initSettings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of engine settings to be set at database initialisation.",
                        "willReplaceOnChanges": true
                    },
                    "isHaCluster": {
                        "type": "boolean",
                        "description": "Enable or disable high availability for the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`isHaCluster`\" pulumi-lang-dotnet=\"`IsHaCluster`\" pulumi-lang-go=\"`isHaCluster`\" pulumi-lang-python=\"`is_ha_cluster`\" pulumi-lang-yaml=\"`isHaCluster`\" pulumi-lang-java=\"`isHaCluster`\"\u003e`isHaCluster`\u003c/span\u003e will recreate the Database Instance.\n"
                    },
                    "loadBalancer": {
                        "$ref": "#/types/scaleway:index/DatabaseInstanceLoadBalancer:DatabaseInstanceLoadBalancer",
                        "description": "List of Load Balancer endpoints of the Database Instance.\n"
                    },
                    "logsPolicy": {
                        "$ref": "#/types/scaleway:index/DatabaseInstanceLogsPolicy:DatabaseInstanceLogsPolicy",
                        "description": "Logs policy configuration"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Database Instance.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of Database Instance you want to create (e.g. `db-dev-s`).\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will upgrade the Database Instance to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e without any\ninterruption.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, if you are using \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e storage, you should upgrade the \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e, and if you are using \u003cspan pulumi-lang-nodejs=\"`bssd`\" pulumi-lang-dotnet=\"`Bssd`\" pulumi-lang-go=\"`bssd`\" pulumi-lang-python=\"`bssd`\" pulumi-lang-yaml=\"`bssd`\" pulumi-lang-java=\"`bssd`\"\u003e`bssd`\u003c/span\u003e storage, you should increase the volume size before making any other changes to your Database Instance.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the Database Instance is associated with.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the first user of the Database Instance. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword for the first user of the Database Instance in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DatabaseInstancePrivateIp:DatabaseInstancePrivateIp"
                        },
                        "description": "The private IPv4 address associated with the resource.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:index/DatabaseInstancePrivateNetwork:DatabaseInstancePrivateNetwork",
                        "description": "List of Private Networks endpoints of the Database Instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Database\nInstance is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "readReplicas": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DatabaseInstanceReadReplica:DatabaseInstanceReadReplica"
                        },
                        "description": "List of read replicas of the Database Instance.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the Database Instance should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "settings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of engine settings to be set on a running instance."
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "The ID of an existing snapshot to restore or create the Database Instance from. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`engine`\" pulumi-lang-dotnet=\"`Engine`\" pulumi-lang-go=\"`engine`\" pulumi-lang-python=\"`engine`\" pulumi-lang-yaml=\"`engine`\" pulumi-lang-java=\"`engine`\"\u003e`engine`\u003c/span\u003e parameter and backup settings.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Database Instance.\n"
                    },
                    "upgradableVersions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DatabaseInstanceUpgradableVersion:DatabaseInstanceUpgradableVersion"
                        },
                        "description": "List of available engine versions for upgrade. Each version contains:\n"
                    },
                    "userName": {
                        "type": "string",
                        "description": "Identifier for the first user of the Database Instance.\n\n\u003e **Important** Updates to \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e will recreate the Database Instance.\n",
                        "willReplaceOnChanges": true
                    },
                    "volumeSizeInGb": {
                        "type": "integer",
                        "description": "Volume size (in GB). Cannot be used when \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volumeType`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e.\n\n\u003e **Important** Once your Database Instance reaches \u003cspan pulumi-lang-nodejs=\"`diskFull`\" pulumi-lang-dotnet=\"`DiskFull`\" pulumi-lang-go=\"`diskFull`\" pulumi-lang-python=\"`disk_full`\" pulumi-lang-yaml=\"`diskFull`\" pulumi-lang-java=\"`diskFull`\"\u003e`diskFull`\u003c/span\u003e status, you should increase the volume size before making any other change to your Database Instance.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "Type of volume where data are stored (\u003cspan pulumi-lang-nodejs=\"`lssd`\" pulumi-lang-dotnet=\"`Lssd`\" pulumi-lang-go=\"`lssd`\" pulumi-lang-python=\"`lssd`\" pulumi-lang-yaml=\"`lssd`\" pulumi-lang-java=\"`lssd`\"\u003e`lssd`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sbs5k`\" pulumi-lang-dotnet=\"`Sbs5k`\" pulumi-lang-go=\"`sbs5k`\" pulumi-lang-python=\"`sbs_5k`\" pulumi-lang-yaml=\"`sbs5k`\" pulumi-lang-java=\"`sbs5k`\"\u003e`sbs5k`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sbs15k`\" pulumi-lang-dotnet=\"`Sbs15k`\" pulumi-lang-go=\"`sbs15k`\" pulumi-lang-python=\"`sbs_15k`\" pulumi-lang-yaml=\"`sbs15k`\" pulumi-lang-java=\"`sbs15k`\"\u003e`sbs15k`\u003c/span\u003e).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databaseinstance.DatabaseInstance has been deprecated in favor of scaleway.databases/instance.Instance"
        },
        "scaleway:index/databasePrivilege:DatabasePrivilege": {
            "description": "Create and manage Scaleway database privileges.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/#user-and-permissions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-11\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst mainDatabase = new scaleway.databases.Database(\"main\", {\n    instanceId: main.id,\n    name: \"database\",\n});\nconst mainUser = new scaleway.databases.User(\"main\", {\n    instanceId: main.id,\n    name: \"my-db-user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    isAdmin: false,\n});\nconst mainPrivilege = new scaleway.databases.Privilege(\"main\", {\n    instanceId: main.id,\n    userName: mainUser.name,\n    databaseName: mainDatabase.name,\n    permission: \"all\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-11\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\nmain_database = scaleway.databases.Database(\"main\",\n    instance_id=main.id,\n    name=\"database\")\nmain_user = scaleway.databases.User(\"main\",\n    instance_id=main.id,\n    name=\"my-db-user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    is_admin=False)\nmain_privilege = scaleway.databases.Privilege(\"main\",\n    instance_id=main.id,\n    user_name=main_user.name,\n    database_name=main_database.name,\n    permission=\"all\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-11\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var mainDatabase = new Scaleway.Databases.Database(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"database\",\n    });\n\n    var mainUser = new Scaleway.Databases.User(\"main\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"my-db-user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        IsAdmin = false,\n    });\n\n    var mainPrivilege = new Scaleway.Databases.Privilege(\"main\", new()\n    {\n        InstanceId = main.Id,\n        UserName = mainUser.Name,\n        DatabaseName = mainDatabase.Name,\n        Permission = \"all\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-11\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDatabase, err := databases.NewDatabase(ctx, \"main\", \u0026databases.DatabaseArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"database\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainUser, err := databases.NewUser(ctx, \"main\", \u0026databases.UserArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"my-db-user\"),\n\t\t\tPassword:   pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tIsAdmin:    pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewPrivilege(ctx, \"main\", \u0026databases.PrivilegeArgs{\n\t\t\tInstanceId:   main.ID(),\n\t\t\tUserName:     mainUser.Name,\n\t\t\tDatabaseName: mainDatabase.Name,\n\t\t\tPermission:   pulumi.String(\"all\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Database;\nimport com.pulumi.scaleway.databases.DatabaseArgs;\nimport com.pulumi.scaleway.databases.User;\nimport com.pulumi.scaleway.databases.UserArgs;\nimport com.pulumi.scaleway.databases.Privilege;\nimport com.pulumi.scaleway.databases.PrivilegeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-11\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var mainDatabase = new Database(\"mainDatabase\", DatabaseArgs.builder()\n            .instanceId(main.id())\n            .name(\"database\")\n            .build());\n\n        var mainUser = new User(\"mainUser\", UserArgs.builder()\n            .instanceId(main.id())\n            .name(\"my-db-user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .isAdmin(false)\n            .build());\n\n        var mainPrivilege = new Privilege(\"mainPrivilege\", PrivilegeArgs.builder()\n            .instanceId(main.id())\n            .userName(mainUser.name())\n            .databaseName(mainDatabase.name())\n            .permission(\"all\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-11\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  mainDatabase:\n    type: scaleway:databases:Database\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: database\n  mainUser:\n    type: scaleway:databases:User\n    name: main\n    properties:\n      instanceId: ${main.id}\n      name: my-db-user\n      password: thiZ_is_v\u0026ry_s3cret\n      isAdmin: false\n  mainPrivilege:\n    type: scaleway:databases:Privilege\n    name: main\n    properties:\n      instanceId: ${main.id}\n      userName: ${mainUser.name}\n      databaseName: ${mainDatabase.name}\n      permission: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Permission Drift Management\n\n### Understanding Permission Drift\n\nWhen you configure a privilege (e.g., \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e), Scaleway applies it to **database objects that exist at that moment**. If new tables, views, or sequences are created later, they won't automatically inherit these permissions. In that case, the API may return \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n\n**Example:**\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.databases.Privilege(\"app\", {\n    instanceId: main.id,\n    userName: \"app_user\",\n    databaseName: \"mydb\",\n    permission: \"readwrite\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.databases.Privilege(\"app\",\n    instance_id=main[\"id\"],\n    user_name=\"app_user\",\n    database_name=\"mydb\",\n    permission=\"readwrite\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Databases.Privilege(\"app\", new()\n    {\n        InstanceId = main.Id,\n        UserName = \"app_user\",\n        DatabaseName = \"mydb\",\n        Permission = \"readwrite\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewPrivilege(ctx, \"app\", \u0026databases.PrivilegeArgs{\n\t\t\tInstanceId:   pulumi.Any(main.Id),\n\t\t\tUserName:     pulumi.String(\"app_user\"),\n\t\t\tDatabaseName: pulumi.String(\"mydb\"),\n\t\t\tPermission:   pulumi.String(\"readwrite\"),\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.scaleway.databases.Privilege;\nimport com.pulumi.scaleway.databases.PrivilegeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Privilege(\"app\", PrivilegeArgs.builder()\n            .instanceId(main.id())\n            .userName(\"app_user\")\n            .databaseName(\"mydb\")\n            .permission(\"readwrite\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:databases:Privilege\n    properties:\n      instanceId: ${main.id}\n      userName: app_user\n      databaseName: mydb\n      permission: readwrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Handling Permission Drift\n\nRun `pulumi up` to reapply the configured permission to all objects (existing and new):\n\n```bash\npulumi up\n```\n\nThe plan will typically show:\n\n```diff\n~ resource \"scaleway_rdb_privilege\" \"app\" {\n    ~ permission = \"custom\" -\u003e \"readwrite\"\n}\n```\n\n## Import\n\nThe user privileges can be imported using the `{region}/{instance_id}/{database_name}/{user_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databasePrivilege:DatabasePrivilege o fr-par/11111111-1111-1111-1111-111111111111/database_name/foo\n```\n\n",
            "properties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-db-name`).\n"
                },
                "effectivePermission": {
                    "type": "string",
                    "description": "The actual permission currently set in Scaleway. May differ from \u003cspan pulumi-lang-nodejs=\"`permission`\" pulumi-lang-dotnet=\"`Permission`\" pulumi-lang-go=\"`permission`\" pulumi-lang-python=\"`permission`\" pulumi-lang-yaml=\"`permission`\" pulumi-lang-java=\"`permission`\"\u003e`permission`\u003c/span\u003e after database schema changes (new tables, views, or sequences created).\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                },
                "permissionStatus": {
                    "type": "string",
                    "description": "Permission synchronization status. Possible values:\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user (e.g. `my-db-user`).\n"
                }
            },
            "required": [
                "databaseName",
                "effectivePermission",
                "instanceId",
                "permission",
                "permissionStatus",
                "userName"
            ],
            "inputProperties": {
                "databaseName": {
                    "type": "string",
                    "description": "Name of the database (e.g. `my-db-name`).\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n",
                    "willReplaceOnChanges": true
                },
                "permission": {
                    "type": "string",
                    "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user (e.g. `my-db-user`).\n"
                }
            },
            "requiredInputs": [
                "databaseName",
                "instanceId",
                "permission",
                "userName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabasePrivilege resources.\n",
                "properties": {
                    "databaseName": {
                        "type": "string",
                        "description": "Name of the database (e.g. `my-db-name`).\n"
                    },
                    "effectivePermission": {
                        "type": "string",
                        "description": "The actual permission currently set in Scaleway. May differ from \u003cspan pulumi-lang-nodejs=\"`permission`\" pulumi-lang-dotnet=\"`Permission`\" pulumi-lang-go=\"`permission`\" pulumi-lang-python=\"`permission`\" pulumi-lang-yaml=\"`permission`\" pulumi-lang-java=\"`permission`\"\u003e`permission`\u003c/span\u003e after database schema changes (new tables, views, or sequences created).\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n",
                        "willReplaceOnChanges": true
                    },
                    "permission": {
                        "type": "string",
                        "description": "Desired permission level. Valid values are \u003cspan pulumi-lang-nodejs=\"`readonly`\" pulumi-lang-dotnet=\"`Readonly`\" pulumi-lang-go=\"`readonly`\" pulumi-lang-python=\"`readonly`\" pulumi-lang-yaml=\"`readonly`\" pulumi-lang-java=\"`readonly`\"\u003e`readonly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e and \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.\n"
                    },
                    "permissionStatus": {
                        "type": "string",
                        "description": "Permission synchronization status. Possible values:\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "userName": {
                        "type": "string",
                        "description": "Name of the user (e.g. `my-db-user`).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databaseprivilege.DatabasePrivilege has been deprecated in favor of scaleway.databases/privilege.Privilege"
        },
        "scaleway:index/databaseReadReplica:DatabaseReadReplica": {
            "description": "Creates and manages Read Replicas.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"test-rdb-rr-update\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_rdb_read_replica\",\n        \"minimal\",\n    ],\n});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    directAccess: {},\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"test-rdb-rr-update\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_rdb_read_replica\",\n        \"minimal\",\n    ])\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    direct_access={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"test-rdb-rr-update\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_rdb_read_replica\",\n            \"minimal\",\n        },\n    });\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        DirectAccess = null,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb-rr-update\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_rdb_read_replica\"),\n\t\t\t\tpulumi.String(\"minimal\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId:   instance.ID(),\n\t\t\tDirectAccess: \u0026databases.ReadReplicaDirectAccessArgs{},\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaDirectAccessArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"test-rdb-rr-update\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_rdb_read_replica\",\n                \"minimal\")\n            .build());\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .directAccess(ReadReplicaDirectAccessArgs.builder()\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb-rr-update\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - terraform-test\n        - scaleway_rdb_read_replica\n        - minimal\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      directAccess: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private network with static endpoint\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"rdb_instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    privateNetwork: {\n        privateNetworkId: pn.id,\n        serviceIp: \"192.168.1.254/24\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"rdb_instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npn = scaleway.network.PrivateNetwork(\"pn\")\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    private_network={\n        \"private_network_id\": pn.id,\n        \"service_ip\": \"192.168.1.254/24\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"rdb_instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        PrivateNetwork = new Scaleway.Databases.Inputs.ReadReplicaPrivateNetworkArgs\n        {\n            PrivateNetworkId = pn.Id,\n            ServiceIp = \"192.168.1.254/24\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb_instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026databases.ReadReplicaPrivateNetworkArgs{\n\t\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\t\tServiceIp:        pulumi.String(\"192.168.1.254/24\"),\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"rdb_instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var pn = new PrivateNetwork(\"pn\");\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .privateNetwork(ReadReplicaPrivateNetworkArgs.builder()\n                .privateNetworkId(pn.id())\n                .serviceIp(\"192.168.1.254/24\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb_instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  pn:\n    type: scaleway:network:PrivateNetwork\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      privateNetwork:\n        privateNetworkId: ${pn.id}\n        serviceIp: 192.168.1.254/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private network with IPAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst instance = new scaleway.databases.Instance(\"instance\", {\n    name: \"rdb_instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-14\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst replica = new scaleway.databases.ReadReplica(\"replica\", {\n    instanceId: instance.id,\n    privateNetwork: {\n        privateNetworkId: pn.id,\n        enableIpam: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ninstance = scaleway.databases.Instance(\"instance\",\n    name=\"rdb_instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-14\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\npn = scaleway.network.PrivateNetwork(\"pn\")\nreplica = scaleway.databases.ReadReplica(\"replica\",\n    instance_id=instance.id,\n    private_network={\n        \"private_network_id\": pn.id,\n        \"enable_ipam\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = new Scaleway.Databases.Instance(\"instance\", new()\n    {\n        Name = \"rdb_instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-14\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var replica = new Scaleway.Databases.ReadReplica(\"replica\", new()\n    {\n        InstanceId = instance.Id,\n        PrivateNetwork = new Scaleway.Databases.Inputs.ReadReplicaPrivateNetworkArgs\n        {\n            PrivateNetworkId = pn.Id,\n            EnableIpam = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := databases.NewInstance(ctx, \"instance\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"rdb_instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-14\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewReadReplica(ctx, \"replica\", \u0026databases.ReadReplicaArgs{\n\t\t\tInstanceId: instance.ID(),\n\t\t\tPrivateNetwork: \u0026databases.ReadReplicaPrivateNetworkArgs{\n\t\t\t\tPrivateNetworkId: pn.ID(),\n\t\t\t\tEnableIpam:       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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.databases.ReadReplica;\nimport com.pulumi.scaleway.databases.ReadReplicaArgs;\nimport com.pulumi.scaleway.databases.inputs.ReadReplicaPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = new Instance(\"instance\", InstanceArgs.builder()\n            .name(\"rdb_instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-14\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var pn = new PrivateNetwork(\"pn\");\n\n        var replica = new ReadReplica(\"replica\", ReadReplicaArgs.builder()\n            .instanceId(instance.id())\n            .privateNetwork(ReadReplicaPrivateNetworkArgs.builder()\n                .privateNetworkId(pn.id())\n                .enableIpam(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  instance:\n    type: scaleway:databases:Instance\n    properties:\n      name: rdb_instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-14\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  pn:\n    type: scaleway:network:PrivateNetwork\n  replica:\n    type: scaleway:databases:ReadReplica\n    properties:\n      instanceId: ${instance.id}\n      privateNetwork:\n        privateNetworkId: ${pn.id}\n        enableIpam: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRead Replicas can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databaseReadReplica:DatabaseReadReplica rr fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "directAccess": {
                    "$ref": "#/types/scaleway:index/DatabaseReadReplicaDirectAccess:DatabaseReadReplicaDirectAccess",
                    "description": "Creates a direct access endpoint to rdb replica.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/DatabaseReadReplicaPrivateNetwork:DatabaseReadReplicaPrivateNetwork",
                    "description": "Create an endpoint in a Private Netork.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Read Replica should be created.\n"
                },
                "sameZone": {
                    "type": "boolean",
                    "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n"
                }
            },
            "required": [
                "instanceId"
            ],
            "inputProperties": {
                "directAccess": {
                    "$ref": "#/types/scaleway:index/DatabaseReadReplicaDirectAccess:DatabaseReadReplicaDirectAccess",
                    "description": "Creates a direct access endpoint to rdb replica.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/DatabaseReadReplicaPrivateNetwork:DatabaseReadReplicaPrivateNetwork",
                    "description": "Create an endpoint in a Private Netork.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the Read Replica should be created.\n",
                    "willReplaceOnChanges": true
                },
                "sameZone": {
                    "type": "boolean",
                    "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseReadReplica resources.\n",
                "properties": {
                    "directAccess": {
                        "$ref": "#/types/scaleway:index/DatabaseReadReplicaDirectAccess:DatabaseReadReplicaDirectAccess",
                        "description": "Creates a direct access endpoint to rdb replica.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the rdb instance.\n\n\u003e **Important:** The replica musts contains at least one \u003cspan pulumi-lang-nodejs=\"`directAccess`\" pulumi-lang-dotnet=\"`DirectAccess`\" pulumi-lang-go=\"`directAccess`\" pulumi-lang-python=\"`direct_access`\" pulumi-lang-yaml=\"`directAccess`\" pulumi-lang-java=\"`directAccess`\"\u003e`directAccess`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e. It can contain both.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:index/DatabaseReadReplicaPrivateNetwork:DatabaseReadReplicaPrivateNetwork",
                        "description": "Create an endpoint in a Private Netork.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the Read Replica should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sameZone": {
                        "type": "boolean",
                        "description": "Defines whether to create the replica in the same availability zone as the main instance nodes or not.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databasereadreplica.DatabaseReadReplica has been deprecated in favor of scaleway.databases/readreplica.ReadReplica"
        },
        "scaleway:index/databaseUser:DatabaseUser": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.User`\" pulumi-lang-dotnet=\"`scaleway.databases.User`\" pulumi-lang-go=\"`databases.User`\" pulumi-lang-python=\"`databases.User`\" pulumi-lang-yaml=\"`scaleway.databases.User`\" pulumi-lang-java=\"`scaleway.databases.User`\"\u003e`scaleway.databases.User`\u003c/span\u003e resource creates and manages database users.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as random from \"@pulumi/random\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic user creation\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb\",\n    nodeType: \"DB-DEV-S\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: true,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n});\nconst dbPassword = new random.index.Password(\"db_password\", {\n    length: 20,\n    special: true,\n    upper: true,\n    lower: true,\n    numeric: true,\n    minUpper: 1,\n    minLower: 1,\n    minNumeric: 1,\n    minSpecial: 1,\n    overrideSpecial: \"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\",\n});\nconst dbAdmin = new scaleway.databases.User(\"db_admin\", {\n    instanceId: main.id,\n    name: \"devtools\",\n    password: dbPassword.result,\n    isAdmin: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_random as random\nimport pulumiverse_scaleway as scaleway\n\n### Basic user creation\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb\",\n    node_type=\"DB-DEV-S\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=True,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\")\ndb_password = random.Password(\"db_password\",\n    length=20,\n    special=True,\n    upper=True,\n    lower=True,\n    numeric=True,\n    min_upper=1,\n    min_lower=1,\n    min_numeric=1,\n    min_special=1,\n    override_special=!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\ndb_admin = scaleway.databases.User(\"db_admin\",\n    instance_id=main.id,\n    name=\"devtools\",\n    password=db_password[\"result\"],\n    is_admin=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Random = Pulumi.Random;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic user creation\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb\",\n        NodeType = \"DB-DEV-S\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = true,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n    });\n\n    var dbPassword = new Random.Password(\"db_password\", new()\n    {\n        Length = 20,\n        Special = true,\n        Upper = true,\n        Lower = true,\n        Numeric = true,\n        MinUpper = 1,\n        MinLower = 1,\n        MinNumeric = 1,\n        MinSpecial = 1,\n        OverrideSpecial = \"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\",\n    });\n\n    var dbAdmin = new Scaleway.Databases.User(\"db_admin\", new()\n    {\n        InstanceId = main.Id,\n        Name = \"devtools\",\n        Password = dbPassword.Result,\n        IsAdmin = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic user creation\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb\"),\n\t\t\tNodeType:      pulumi.String(\"DB-DEV-S\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(true),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdbPassword, err := random.NewPassword(ctx, \"db_password\", \u0026random.PasswordArgs{\n\t\t\tLength:          20,\n\t\t\tSpecial:         true,\n\t\t\tUpper:           true,\n\t\t\tLower:           true,\n\t\t\tNumeric:         true,\n\t\t\tMinUpper:        1,\n\t\t\tMinLower:        1,\n\t\t\tMinNumeric:      1,\n\t\t\tMinSpecial:      1,\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 = databases.NewUser(ctx, \"db_admin\", \u0026databases.UserArgs{\n\t\t\tInstanceId: main.ID(),\n\t\t\tName:       pulumi.String(\"devtools\"),\n\t\t\tPassword:   dbPassword.Result,\n\t\t\tIsAdmin:    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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.random.Password;\nimport com.pulumi.random.PasswordArgs;\nimport com.pulumi.scaleway.databases.User;\nimport com.pulumi.scaleway.databases.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 user creation\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb\")\n            .nodeType(\"DB-DEV-S\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(true)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .build());\n\n        var dbPassword = new Password(\"dbPassword\", PasswordArgs.builder()\n            .length(20)\n            .special(true)\n            .upper(true)\n            .lower(true)\n            .numeric(true)\n            .minUpper(1)\n            .minLower(1)\n            .minNumeric(1)\n            .minSpecial(1)\n            .overrideSpecial(\"!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?\")\n            .build());\n\n        var dbAdmin = new User(\"dbAdmin\", UserArgs.builder()\n            .instanceId(main.id())\n            .name(\"devtools\")\n            .password(dbPassword.result())\n            .isAdmin(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic user creation\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb\n      nodeType: DB-DEV-S\n      engine: PostgreSQL-15\n      isHaCluster: true\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n  dbPassword:\n    type: random:Password\n    name: db_password\n    properties:\n      length: 20\n      special: true\n      upper: true\n      lower: true\n      numeric: true\n      minUpper: 1\n      minLower: 1\n      minNumeric: 1\n      minSpecial: 1 # Exclude characters that might cause issues in some contexts\n      overrideSpecial: '!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?'\n  dbAdmin:\n    type: scaleway:databases:User\n    name: db_admin\n    properties:\n      instanceId: ${main.id}\n      name: devtools\n      password: ${dbPassword.result}\n      isAdmin: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase users can be imported using `{region}/{instance_id}/{user_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/databaseUser:DatabaseUser admin fr-par/11111111-1111-1111-1111-111111111111/admin\n```\n\n",
            "properties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n"
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Grant admin permissions to the database user.\n"
                },
                "name": {
                    "type": "string",
                    "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                    "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this resource resides in.\n"
                }
            },
            "required": [
                "instanceId",
                "name"
            ],
            "inputProperties": {
                "instanceId": {
                    "type": "string",
                    "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n",
                    "willReplaceOnChanges": true
                },
                "isAdmin": {
                    "type": "boolean",
                    "description": "Grant admin permissions to the database user.\n"
                },
                "name": {
                    "type": "string",
                    "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n",
                    "willReplaceOnChanges": true
                },
                "password": {
                    "type": "string",
                    "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                    "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this resource resides in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseUser resources.\n",
                "properties": {
                    "instanceId": {
                        "type": "string",
                        "description": "UUID of the Database Instance.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e will recreate the database user.\n",
                        "willReplaceOnChanges": true
                    },
                    "isAdmin": {
                        "type": "boolean",
                        "description": "Grant admin permissions to the database user.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "database user name.\n\n\u003e **Important:** Updates to \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 recreate the database user.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "database user password. The password must meet the following requirements based on ISO27001 standards:\n- **Length**: 8-128 characters\n- **Character types required**:\n- At least 1 lowercase letter (a-z)\n- At least 1 uppercase letter (A-Z)\n- At least 1 digit (0-9)\n- At least 1 special character (!@#$%^\u0026*()_+-=[]{}|;:,.\u003c\u003e?)\n\nFor secure password generation, consider using the \u003cspan pulumi-lang-nodejs=\"`randomPassword`\" pulumi-lang-dotnet=\"`RandomPassword`\" pulumi-lang-go=\"`randomPassword`\" pulumi-lang-python=\"`random_password`\" pulumi-lang-yaml=\"`randomPassword`\" pulumi-lang-java=\"`randomPassword`\"\u003e`randomPassword`\u003c/span\u003e resource with appropriate parameters.\n",
                        "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.\nDatabase user password in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The Scaleway region this resource resides in.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/databaseuser.DatabaseUser has been deprecated in favor of scaleway.databases/user.User"
        },
        "scaleway:index/domainRecord:DomainRecord": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Record`\" pulumi-lang-dotnet=\"`scaleway.domain.Record`\" pulumi-lang-go=\"`domain.Record`\" pulumi-lang-python=\"`domain.Record`\" pulumi-lang-yaml=\"`scaleway.domain.Record`\" pulumi-lang-java=\"`scaleway.domain.Record`\"\u003e`scaleway.domain.Record`\u003c/span\u003e resource allows you to create and manage DNS records for Scaleway domains.\n\nRefer to the Domains and DNS [product documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and [API documentation](https://www.scaleway.com/en/developers/api/domains-and-dns/) for more information.\n\n## Example Usage\n\n### Create basic DNS records\n\nThe following commands allow you to:\n\n- create an A record for the `www.domain.tld` domain, pointing to `1.2.3.4` and another one pointing to `1.2.3.5`\n\n- create an MX record with the `mx.online.net.` mail server and a priority of 10, and another one with the `mx-cache.online.net.` mail server and a priority of 20\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.domain.Record(\"www\", {\n    dnsZone: \"domain.tld\",\n    name: \"www\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n});\nconst www2 = new scaleway.domain.Record(\"www2\", {\n    dnsZone: \"domain.tld\",\n    name: \"www\",\n    type: \"A\",\n    data: \"1.2.3.5\",\n    ttl: 3600,\n});\nconst mx = new scaleway.domain.Record(\"mx\", {\n    dnsZone: \"domain.tld\",\n    name: \"\",\n    type: \"MX\",\n    data: \"mx.online.net.\",\n    ttl: 3600,\n    priority: 10,\n});\nconst mx2 = new scaleway.domain.Record(\"mx2\", {\n    dnsZone: \"domain.tld\",\n    name: \"\",\n    type: \"MX\",\n    data: \"mx-cache.online.net.\",\n    ttl: 3600,\n    priority: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.domain.Record(\"www\",\n    dns_zone=\"domain.tld\",\n    name=\"www\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600)\nwww2 = scaleway.domain.Record(\"www2\",\n    dns_zone=\"domain.tld\",\n    name=\"www\",\n    type=\"A\",\n    data=\"1.2.3.5\",\n    ttl=3600)\nmx = scaleway.domain.Record(\"mx\",\n    dns_zone=\"domain.tld\",\n    name=\"\",\n    type=\"MX\",\n    data=\"mx.online.net.\",\n    ttl=3600,\n    priority=10)\nmx2 = scaleway.domain.Record(\"mx2\",\n    dns_zone=\"domain.tld\",\n    name=\"\",\n    type=\"MX\",\n    data=\"mx-cache.online.net.\",\n    ttl=3600,\n    priority=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var www = new Scaleway.Domain.Record(\"www\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n    });\n\n    var www2 = new Scaleway.Domain.Record(\"www2\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = \"1.2.3.5\",\n        Ttl = 3600,\n    });\n\n    var mx = new Scaleway.Domain.Record(\"mx\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"\",\n        Type = \"MX\",\n        Data = \"mx.online.net.\",\n        Ttl = 3600,\n        Priority = 10,\n    });\n\n    var mx2 = new Scaleway.Domain.Record(\"mx2\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"\",\n        Type = \"MX\",\n        Data = \"mx-cache.online.net.\",\n        Ttl = 3600,\n        Priority = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRecord(ctx, \"www\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"www2\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.5\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"domain.tld\"),\n\t\t\tName:     pulumi.String(\"\"),\n\t\t\tType:     pulumi.String(\"MX\"),\n\t\t\tData:     pulumi.String(\"mx.online.net.\"),\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx2\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"domain.tld\"),\n\t\t\tName:     pulumi.String(\"\"),\n\t\t\tType:     pulumi.String(\"MX\"),\n\t\t\tData:     pulumi.String(\"mx-cache.online.net.\"),\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(20),\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.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 www = new Record(\"www\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .build());\n\n        var www2 = new Record(\"www2\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(\"1.2.3.5\")\n            .ttl(3600)\n            .build());\n\n        var mx = new Record(\"mx\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"\")\n            .type(\"MX\")\n            .data(\"mx.online.net.\")\n            .ttl(3600)\n            .priority(10)\n            .build());\n\n        var mx2 = new Record(\"mx2\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"\")\n            .type(\"MX\")\n            .data(\"mx-cache.online.net.\")\n            .ttl(3600)\n            .priority(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  www:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: www\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n  www2:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: www\n      type: A\n      data: 1.2.3.5\n      ttl: 3600\n  mx:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: \"\"\n      type: MX\n      data: mx.online.net.\n      ttl: 3600\n      priority: 10\n  mx2:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: \"\"\n      type: MX\n      data: mx-cache.online.net.\n      ttl: 3600\n      priority: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create dynamic records\n\nThe following commands allow you to:\n\n- create a Geo IP record for `images.domain.tld` that points to different IPs based on the user's location: `1.2.3.5` for users in France (EU), and `4.3.2.1` for users in North America (NA)\n\n- create an HTTP service record for `app.domain.tld` that checks the health of specified IPs and responds based on their status.\n\n- create view-based records for `db.domain.tld` that resolve differently based on the client's subnet.\n\n- create a weighted record for `web.domain.tld` that directs traffic to different IPs based on their weights.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst geoIp = new scaleway.domain.Record(\"geo_ip\", {\n    dnsZone: \"domain.tld\",\n    name: \"images\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    geoIp: {\n        matches: [\n            {\n                continents: [\"EU\"],\n                countries: [\"FR\"],\n                data: \"1.2.3.5\",\n            },\n            {\n                continents: [\"NA\"],\n                data: \"4.3.2.1\",\n            },\n        ],\n    },\n});\nconst httpService = new scaleway.domain.Record(\"http_service\", {\n    dnsZone: \"domain.tld\",\n    name: \"app\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    httpService: {\n        ips: [\n            \"1.2.3.5\",\n            \"1.2.3.6\",\n        ],\n        mustContain: \"up\",\n        url: \"http://mywebsite.com/health\",\n        userAgent: \"scw_service_up\",\n        strategy: \"hashed\",\n    },\n});\nconst view = new scaleway.domain.Record(\"view\", {\n    dnsZone: \"domain.tld\",\n    name: \"db\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    views: [\n        {\n            subnet: \"100.0.0.0/16\",\n            data: \"1.2.3.5\",\n        },\n        {\n            subnet: \"100.1.0.0/16\",\n            data: \"1.2.3.6\",\n        },\n    ],\n});\nconst weighted = new scaleway.domain.Record(\"weighted\", {\n    dnsZone: \"domain.tld\",\n    name: \"web\",\n    type: \"A\",\n    data: \"1.2.3.4\",\n    ttl: 3600,\n    weighteds: [\n        {\n            ip: \"1.2.3.5\",\n            weight: 1,\n        },\n        {\n            ip: \"1.2.3.6\",\n            weight: 2,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ngeo_ip = scaleway.domain.Record(\"geo_ip\",\n    dns_zone=\"domain.tld\",\n    name=\"images\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    geo_ip={\n        \"matches\": [\n            {\n                \"continents\": [\"EU\"],\n                \"countries\": [\"FR\"],\n                \"data\": \"1.2.3.5\",\n            },\n            {\n                \"continents\": [\"NA\"],\n                \"data\": \"4.3.2.1\",\n            },\n        ],\n    })\nhttp_service = scaleway.domain.Record(\"http_service\",\n    dns_zone=\"domain.tld\",\n    name=\"app\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    http_service={\n        \"ips\": [\n            \"1.2.3.5\",\n            \"1.2.3.6\",\n        ],\n        \"must_contain\": \"up\",\n        \"url\": \"http://mywebsite.com/health\",\n        \"user_agent\": \"scw_service_up\",\n        \"strategy\": \"hashed\",\n    })\nview = scaleway.domain.Record(\"view\",\n    dns_zone=\"domain.tld\",\n    name=\"db\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    views=[\n        {\n            \"subnet\": \"100.0.0.0/16\",\n            \"data\": \"1.2.3.5\",\n        },\n        {\n            \"subnet\": \"100.1.0.0/16\",\n            \"data\": \"1.2.3.6\",\n        },\n    ])\nweighted = scaleway.domain.Record(\"weighted\",\n    dns_zone=\"domain.tld\",\n    name=\"web\",\n    type=\"A\",\n    data=\"1.2.3.4\",\n    ttl=3600,\n    weighteds=[\n        {\n            \"ip\": \"1.2.3.5\",\n            \"weight\": 1,\n        },\n        {\n            \"ip\": \"1.2.3.6\",\n            \"weight\": 2,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var geoIp = new Scaleway.Domain.Record(\"geo_ip\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"images\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        GeoIp = new Scaleway.Domain.Inputs.RecordGeoIpArgs\n        {\n            Matches = new[]\n            {\n                new Scaleway.Domain.Inputs.RecordGeoIpMatchArgs\n                {\n                    Continents = new[]\n                    {\n                        \"EU\",\n                    },\n                    Countries = new[]\n                    {\n                        \"FR\",\n                    },\n                    Data = \"1.2.3.5\",\n                },\n                new Scaleway.Domain.Inputs.RecordGeoIpMatchArgs\n                {\n                    Continents = new[]\n                    {\n                        \"NA\",\n                    },\n                    Data = \"4.3.2.1\",\n                },\n            },\n        },\n    });\n\n    var httpService = new Scaleway.Domain.Record(\"http_service\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"app\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        HttpService = new Scaleway.Domain.Inputs.RecordHttpServiceArgs\n        {\n            Ips = new[]\n            {\n                \"1.2.3.5\",\n                \"1.2.3.6\",\n            },\n            MustContain = \"up\",\n            Url = \"http://mywebsite.com/health\",\n            UserAgent = \"scw_service_up\",\n            Strategy = \"hashed\",\n        },\n    });\n\n    var view = new Scaleway.Domain.Record(\"view\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"db\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        Views = new[]\n        {\n            new Scaleway.Domain.Inputs.RecordViewArgs\n            {\n                Subnet = \"100.0.0.0/16\",\n                Data = \"1.2.3.5\",\n            },\n            new Scaleway.Domain.Inputs.RecordViewArgs\n            {\n                Subnet = \"100.1.0.0/16\",\n                Data = \"1.2.3.6\",\n            },\n        },\n    });\n\n    var weighted = new Scaleway.Domain.Record(\"weighted\", new()\n    {\n        DnsZone = \"domain.tld\",\n        Name = \"web\",\n        Type = \"A\",\n        Data = \"1.2.3.4\",\n        Ttl = 3600,\n        Weighteds = new[]\n        {\n            new Scaleway.Domain.Inputs.RecordWeightedArgs\n            {\n                Ip = \"1.2.3.5\",\n                Weight = 1,\n            },\n            new Scaleway.Domain.Inputs.RecordWeightedArgs\n            {\n                Ip = \"1.2.3.6\",\n                Weight = 2,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewRecord(ctx, \"geo_ip\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"images\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tGeoIp: \u0026domain.RecordGeoIpArgs{\n\t\t\t\tMatches: domain.RecordGeoIpMatchArray{\n\t\t\t\t\t\u0026domain.RecordGeoIpMatchArgs{\n\t\t\t\t\t\tContinents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"EU\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCountries: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"FR\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tData: pulumi.String(\"1.2.3.5\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026domain.RecordGeoIpMatchArgs{\n\t\t\t\t\t\tContinents: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"NA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tData: pulumi.String(\"4.3.2.1\"),\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 = domain.NewRecord(ctx, \"http_service\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"app\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tHttpService: \u0026domain.RecordHttpServiceArgs{\n\t\t\t\tIps: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1.2.3.5\"),\n\t\t\t\t\tpulumi.String(\"1.2.3.6\"),\n\t\t\t\t},\n\t\t\t\tMustContain: pulumi.String(\"up\"),\n\t\t\t\tUrl:         pulumi.String(\"http://mywebsite.com/health\"),\n\t\t\t\tUserAgent:   pulumi.String(\"scw_service_up\"),\n\t\t\t\tStrategy:    pulumi.String(\"hashed\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"view\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"db\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tViews: domain.RecordViewArray{\n\t\t\t\t\u0026domain.RecordViewArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"100.0.0.0/16\"),\n\t\t\t\t\tData:   pulumi.String(\"1.2.3.5\"),\n\t\t\t\t},\n\t\t\t\t\u0026domain.RecordViewArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"100.1.0.0/16\"),\n\t\t\t\t\tData:   pulumi.String(\"1.2.3.6\"),\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 = domain.NewRecord(ctx, \"weighted\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(\"domain.tld\"),\n\t\t\tName:    pulumi.String(\"web\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    pulumi.String(\"1.2.3.4\"),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t\tWeighteds: domain.RecordWeightedArray{\n\t\t\t\t\u0026domain.RecordWeightedArgs{\n\t\t\t\t\tIp:     pulumi.String(\"1.2.3.5\"),\n\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026domain.RecordWeightedArgs{\n\t\t\t\t\tIp:     pulumi.String(\"1.2.3.6\"),\n\t\t\t\t\tWeight: pulumi.Int(2),\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.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordGeoIpArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordHttpServiceArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordViewArgs;\nimport com.pulumi.scaleway.domain.inputs.RecordWeightedArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 geoIp = new Record(\"geoIp\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"images\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .geoIp(RecordGeoIpArgs.builder()\n                .matches(                \n                    RecordGeoIpMatchArgs.builder()\n                        .continents(\"EU\")\n                        .countries(\"FR\")\n                        .data(\"1.2.3.5\")\n                        .build(),\n                    RecordGeoIpMatchArgs.builder()\n                        .continents(\"NA\")\n                        .data(\"4.3.2.1\")\n                        .build())\n                .build())\n            .build());\n\n        var httpService = new Record(\"httpService\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"app\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .httpService(RecordHttpServiceArgs.builder()\n                .ips(                \n                    \"1.2.3.5\",\n                    \"1.2.3.6\")\n                .mustContain(\"up\")\n                .url(\"http://mywebsite.com/health\")\n                .userAgent(\"scw_service_up\")\n                .strategy(\"hashed\")\n                .build())\n            .build());\n\n        var view = new Record(\"view\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"db\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .views(            \n                RecordViewArgs.builder()\n                    .subnet(\"100.0.0.0/16\")\n                    .data(\"1.2.3.5\")\n                    .build(),\n                RecordViewArgs.builder()\n                    .subnet(\"100.1.0.0/16\")\n                    .data(\"1.2.3.6\")\n                    .build())\n            .build());\n\n        var weighted = new Record(\"weighted\", RecordArgs.builder()\n            .dnsZone(\"domain.tld\")\n            .name(\"web\")\n            .type(\"A\")\n            .data(\"1.2.3.4\")\n            .ttl(3600)\n            .weighteds(            \n                RecordWeightedArgs.builder()\n                    .ip(\"1.2.3.5\")\n                    .weight(1)\n                    .build(),\n                RecordWeightedArgs.builder()\n                    .ip(\"1.2.3.6\")\n                    .weight(2)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  geoIp:\n    type: scaleway:domain:Record\n    name: geo_ip\n    properties:\n      dnsZone: domain.tld\n      name: images\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      geoIp:\n        matches:\n          - continents:\n              - EU\n            countries:\n              - FR\n            data: 1.2.3.5\n          - continents:\n              - NA\n            data: 4.3.2.1\n  httpService:\n    type: scaleway:domain:Record\n    name: http_service\n    properties:\n      dnsZone: domain.tld\n      name: app\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      httpService:\n        ips:\n          - 1.2.3.5\n          - 1.2.3.6\n        mustContain: up\n        url: http://mywebsite.com/health\n        userAgent: scw_service_up\n        strategy: hashed\n  view:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: db\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      views:\n        - subnet: 100.0.0.0/16\n          data: 1.2.3.5\n        - subnet: 100.1.0.0/16\n          data: 1.2.3.6\n  weighted:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: domain.tld\n      name: web\n      type: A\n      data: 1.2.3.4\n      ttl: 3600\n      weighteds:\n        - ip: 1.2.3.5\n          weight: 1\n        - ip: 1.2.3.6\n          weight: 2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create an Instance and add records with the new Instance IP\n\nThe following commands allow you to:\n\n- create a Scaleway Instance\n- assign The Instance's IP address to various DNS records for a specified DNS zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\n// Your project ID.\nconst projectId = config.require(\"projectId\");\n// The DNS Zone used for testing records.\nconst dnsZone = config.require(\"dnsZone\");\nconst publicIp = new scaleway.instance.Ip(\"public_ip\", {projectId: projectId});\nconst web = new scaleway.instance.Server(\"web\", {\n    projectId: projectId,\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    tags: [\n        \"front\",\n        \"web\",\n    ],\n    ipId: publicIp.id,\n    rootVolume: {\n        sizeInGb: 20,\n    },\n});\nconst webA = new scaleway.domain.Record(\"web_A\", {\n    dnsZone: dnsZone,\n    name: \"web\",\n    type: \"A\",\n    data: web.publicIp,\n    ttl: 3600,\n});\nconst webCname = new scaleway.domain.Record(\"web_cname\", {\n    dnsZone: dnsZone,\n    name: \"www\",\n    type: \"CNAME\",\n    data: `web.${dnsZone}.`,\n    ttl: 3600,\n});\nconst webAlias = new scaleway.domain.Record(\"web_alias\", {\n    dnsZone: dnsZone,\n    name: \"\",\n    type: \"ALIAS\",\n    data: `web.${dnsZone}.`,\n    ttl: 3600,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\n# Your project ID.\nproject_id = config.require(\"projectId\")\n# The DNS Zone used for testing records.\ndns_zone = config.require(\"dnsZone\")\npublic_ip = scaleway.instance.Ip(\"public_ip\", project_id=project_id)\nweb = scaleway.instance.Server(\"web\",\n    project_id=project_id,\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    tags=[\n        \"front\",\n        \"web\",\n    ],\n    ip_id=public_ip.id,\n    root_volume={\n        \"size_in_gb\": 20,\n    })\nweb_a = scaleway.domain.Record(\"web_A\",\n    dns_zone=dns_zone,\n    name=\"web\",\n    type=\"A\",\n    data=web.public_ip,\n    ttl=3600)\nweb_cname = scaleway.domain.Record(\"web_cname\",\n    dns_zone=dns_zone,\n    name=\"www\",\n    type=\"CNAME\",\n    data=f\"web.{dns_zone}.\",\n    ttl=3600)\nweb_alias = scaleway.domain.Record(\"web_alias\",\n    dns_zone=dns_zone,\n    name=\"\",\n    type=\"ALIAS\",\n    data=f\"web.{dns_zone}.\",\n    ttl=3600)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    // Your project ID.\n    var projectId = config.Require(\"projectId\");\n    // The DNS Zone used for testing records.\n    var dnsZone = config.Require(\"dnsZone\");\n    var publicIp = new Scaleway.Instance.Ip(\"public_ip\", new()\n    {\n        ProjectId = projectId,\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        ProjectId = projectId,\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        Tags = new[]\n        {\n            \"front\",\n            \"web\",\n        },\n        IpId = publicIp.Id,\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 20,\n        },\n    });\n\n    var webA = new Scaleway.Domain.Record(\"web_A\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"web\",\n        Type = \"A\",\n        Data = web.PublicIp,\n        Ttl = 3600,\n    });\n\n    var webCname = new Scaleway.Domain.Record(\"web_cname\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"www\",\n        Type = \"CNAME\",\n        Data = $\"web.{dnsZone}.\",\n        Ttl = 3600,\n    });\n\n    var webAlias = new Scaleway.Domain.Record(\"web_alias\", new()\n    {\n        DnsZone = dnsZone,\n        Name = \"\",\n        Type = \"ALIAS\",\n        Data = $\"web.{dnsZone}.\",\n        Ttl = 3600,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\t// Your project ID.\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\t// The DNS Zone used for testing records.\n\t\tdnsZone := cfg.Require(\"dnsZone\")\n\t\tpublicIp, err := instance.NewIp(ctx, \"public_ip\", \u0026instance.IpArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(projectId)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tweb, err := instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(projectId)),\n\t\t\tType:      pulumi.String(\"DEV1-S\"),\n\t\t\tImage:     pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"front\"),\n\t\t\t\tpulumi.String(\"web\"),\n\t\t\t},\n\t\t\tIpId: publicIp.ID(),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(20),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"web\"),\n\t\t\tType:    pulumi.String(\"A\"),\n\t\t\tData:    web.PublicIp,\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_cname\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"www\"),\n\t\t\tType:    pulumi.String(\"CNAME\"),\n\t\t\tData:    pulumi.Sprintf(\"web.%v.\", dnsZone),\n\t\t\tTtl:     pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"web_alias\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(dnsZone)),\n\t\t\tName:    pulumi.String(\"\"),\n\t\t\tType:    pulumi.String(\"ALIAS\"),\n\t\t\tData:    pulumi.Sprintf(\"web.%v.\", dnsZone),\n\t\t\tTtl:     pulumi.Int(3600),\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.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.IpArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var projectId = config.require(\"projectId\");\n        final var dnsZone = config.require(\"dnsZone\");\n        var publicIp = new Ip(\"publicIp\", IpArgs.builder()\n            .projectId(projectId)\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .projectId(projectId)\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .tags(            \n                \"front\",\n                \"web\")\n            .ipId(publicIp.id())\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(20)\n                .build())\n            .build());\n\n        var webA = new Record(\"webA\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"web\")\n            .type(\"A\")\n            .data(web.publicIp())\n            .ttl(3600)\n            .build());\n\n        var webCname = new Record(\"webCname\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"www\")\n            .type(\"CNAME\")\n            .data(String.format(\"web.%s.\", dnsZone))\n            .ttl(3600)\n            .build());\n\n        var webAlias = new Record(\"webAlias\", RecordArgs.builder()\n            .dnsZone(dnsZone)\n            .name(\"\")\n            .type(\"ALIAS\")\n            .data(String.format(\"web.%s.\", dnsZone))\n            .ttl(3600)\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  projectId:\n    type: string\n  dnsZone:\n    type: string\nresources:\n  publicIp:\n    type: scaleway:instance:Ip\n    name: public_ip\n    properties:\n      projectId: ${projectId}\n  web:\n    type: scaleway:instance:Server\n    properties:\n      projectId: ${projectId}\n      type: DEV1-S\n      image: ubuntu_jammy\n      tags:\n        - front\n        - web\n      ipId: ${publicIp.id}\n      rootVolume:\n        sizeInGb: 20\n  webA:\n    type: scaleway:domain:Record\n    name: web_A\n    properties:\n      dnsZone: ${dnsZone}\n      name: web\n      type: A\n      data: ${web.publicIp}\n      ttl: 3600\n  webCname:\n    type: scaleway:domain:Record\n    name: web_cname\n    properties:\n      dnsZone: ${dnsZone}\n      name: www\n      type: CNAME\n      data: web.${dnsZone}.\n      ttl: 3600\n  webAlias:\n    type: scaleway:domain:Record\n    name: web_alias\n    properties:\n      dnsZone: ${dnsZone}\n      name: \"\"\n      type: ALIAS\n      data: web.${dnsZone}.\n      ttl: 3600\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Multiple records\n\nSome record types can have multiple data with the same name (e.g., `A`, `AAAA`, `MX`, `NS`, etc.). You can duplicate a \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Record`\" pulumi-lang-dotnet=\"`scaleway.domain.Record`\" pulumi-lang-go=\"`domain.Record`\" pulumi-lang-python=\"`domain.Record`\" pulumi-lang-yaml=\"`scaleway.domain.Record`\" pulumi-lang-java=\"`scaleway.domain.Record`\"\u003e`scaleway.domain.Record`\u003c/span\u003e  resource with the same \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 the records will be added.\n\nNote however, that some records (e.g., CNAME, multiple dynamic records of different types) must be unique.\n\n## Import\n\nThis section explains how to import a record using the `{dns_zone}/{id}` format.\n\n```sh\n$ pulumi import scaleway:index/domainRecord:DomainRecord www subdomain.domain.tld/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "dnsZone": {
                    "type": "string",
                    "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n"
                },
                "fqdn": {
                    "type": "string",
                    "description": "The FQDN of the record.\n"
                },
                "geoIp": {
                    "$ref": "#/types/scaleway:index/DomainRecordGeoIp:DomainRecordGeoIp",
                    "description": "Return record based on client localisation"
                },
                "httpService": {
                    "$ref": "#/types/scaleway:index/DomainRecordHttpService:DomainRecordHttpService",
                    "description": "Return record based on client localisation"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the record (can be an empty string for a root record).\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record (mostly used with an `MX` record).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to"
                },
                "rootZone": {
                    "type": "boolean",
                    "description": "Does the DNS zone is the root zone or not"
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time To Live of the record in seconds.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n"
                },
                "views": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DomainRecordView:DomainRecordView"
                    },
                    "description": "Return record based on client subnet"
                },
                "weighteds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DomainRecordWeighted:DomainRecordWeighted"
                    },
                    "description": "Return record based on weight"
                }
            },
            "required": [
                "data",
                "dnsZone",
                "fqdn",
                "name",
                "priority",
                "projectId",
                "rootZone",
                "type"
            ],
            "inputProperties": {
                "data": {
                    "type": "string",
                    "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                },
                "dnsZone": {
                    "type": "string",
                    "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n",
                    "willReplaceOnChanges": true
                },
                "geoIp": {
                    "$ref": "#/types/scaleway:index/DomainRecordGeoIp:DomainRecordGeoIp",
                    "description": "Return record based on client localisation"
                },
                "httpService": {
                    "$ref": "#/types/scaleway:index/DomainRecordHttpService:DomainRecordHttpService",
                    "description": "Return record based on client localisation"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the record (can be an empty string for a root record).\n",
                    "willReplaceOnChanges": true
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record (mostly used with an `MX` record).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                    "willReplaceOnChanges": true
                },
                "ttl": {
                    "type": "integer",
                    "description": "Time To Live of the record in seconds.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n",
                    "willReplaceOnChanges": true
                },
                "views": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DomainRecordView:DomainRecordView"
                    },
                    "description": "Return record based on client subnet"
                },
                "weighteds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/DomainRecordWeighted:DomainRecordWeighted"
                    },
                    "description": "Return record based on weight"
                }
            },
            "requiredInputs": [
                "data",
                "dnsZone",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DomainRecord resources.\n",
                "properties": {
                    "data": {
                        "type": "string",
                        "description": "The content of the record (an IPv4 for an `A` record, a string for a `TXT` record, etc.).\n"
                    },
                    "dnsZone": {
                        "type": "string",
                        "description": "The DNS zone of the domain. If the domain has no DNS zone, one will be automatically created.\n",
                        "willReplaceOnChanges": true
                    },
                    "fqdn": {
                        "type": "string",
                        "description": "The FQDN of the record.\n"
                    },
                    "geoIp": {
                        "$ref": "#/types/scaleway:index/DomainRecordGeoIp:DomainRecordGeoIp",
                        "description": "Return record based on client localisation"
                    },
                    "httpService": {
                        "$ref": "#/types/scaleway:index/DomainRecordHttpService:DomainRecordHttpService",
                        "description": "Return record based on client localisation"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the record (can be an empty string for a root record).\n",
                        "willReplaceOnChanges": true
                    },
                    "priority": {
                        "type": "integer",
                        "description": "The priority of the record (mostly used with an `MX` record).\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "rootZone": {
                        "type": "boolean",
                        "description": "Does the DNS zone is the root zone or not"
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "Time To Live of the record in seconds.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the record (`A`, `AAAA`, `MX`, `CNAME`, `DNAME`, `ALIAS`, `NS`, `PTR`, `SRV`, `TXT`, `TLSA`, or `CAA`).\n",
                        "willReplaceOnChanges": true
                    },
                    "views": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DomainRecordView:DomainRecordView"
                        },
                        "description": "Return record based on client subnet"
                    },
                    "weighteds": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/DomainRecordWeighted:DomainRecordWeighted"
                        },
                        "description": "Return record based on weight"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/domainrecord.DomainRecord has been deprecated in favor of scaleway.domain/record.Record"
        },
        "scaleway:index/domainZone:DomainZone": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.domain.Zone`\" pulumi-lang-dotnet=\"`scaleway.domain.Zone`\" pulumi-lang-go=\"`domain.Zone`\" pulumi-lang-python=\"`domain.Zone`\" pulumi-lang-yaml=\"`scaleway.domain.Zone`\" pulumi-lang-java=\"`scaleway.domain.Zone`\"\u003e`scaleway.domain.Zone`\u003c/span\u003e resource allows you to create and manage Scaleway DNS zones.\n\nRefer to the Domains and DNS [product documentation](https://www.scaleway.com/en/docs/network/domains-and-dns/) and [API documentation](https://www.scaleway.com/en/developers/api/domains-and-dns/) for more information.\n\n## Example Usage\n\n### Create a DNS zone\n\nThe following command allows you to create a DNS zone for the `test.scaleway-terraform.com` subdomain.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst test = new scaleway.domain.Zone(\"test\", {\n    domain: \"scaleway-terraform.com\",\n    subdomain: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntest = scaleway.domain.Zone(\"test\",\n    domain=\"scaleway-terraform.com\",\n    subdomain=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Scaleway.Domain.Zone(\"test\", new()\n    {\n        Domain = \"scaleway-terraform.com\",\n        Subdomain = \"test\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := domain.NewZone(ctx, \"test\", \u0026domain.ZoneArgs{\n\t\t\tDomain:    pulumi.String(\"scaleway-terraform.com\"),\n\t\t\tSubdomain: pulumi.String(\"test\"),\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.scaleway.domain.Zone;\nimport com.pulumi.scaleway.domain.ZoneArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Zone(\"test\", ZoneArgs.builder()\n            .domain(\"scaleway-terraform.com\")\n            .subdomain(\"test\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: scaleway:domain:Zone\n    properties:\n      domain: scaleway-terraform.com\n      subdomain: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a zone using the `{subdomain}.{domain}` format.\n\n```sh\n$ pulumi import scaleway:index/domainZone:DomainZone test test.scaleway-terraform.com\n```\n\n",
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "The main domain where the DNS zone will be created.\n"
                },
                "message": {
                    "type": "string",
                    "description": "Message.\n"
                },
                "ns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of same servers for the zone.\n"
                },
                "nsDefaults": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The default list of same servers for the zone.\n"
                },
                "nsMasters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The master list of same servers for the zone.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the domain zone.\n"
                },
                "subdomain": {
                    "type": "string",
                    "description": "The name of the subdomain (zone name) to create within the domain.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time at which the DNS zone was last updated.\n"
                }
            },
            "required": [
                "domain",
                "message",
                "ns",
                "nsDefaults",
                "nsMasters",
                "projectId",
                "status",
                "subdomain",
                "updatedAt"
            ],
            "inputProperties": {
                "domain": {
                    "type": "string",
                    "description": "The main domain where the DNS zone will be created.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n",
                    "willReplaceOnChanges": true
                },
                "subdomain": {
                    "type": "string",
                    "description": "The name of the subdomain (zone name) to create within the domain.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "subdomain"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DomainZone resources.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "The main domain where the DNS zone will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "message": {
                        "type": "string",
                        "description": "Message.\n"
                    },
                    "ns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of same servers for the zone.\n"
                    },
                    "nsDefaults": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The default list of same servers for the zone.\n"
                    },
                    "nsMasters": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The master list of same servers for the zone.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project associated with the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the domain zone.\n"
                    },
                    "subdomain": {
                        "type": "string",
                        "description": "The name of the subdomain (zone name) to create within the domain.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time at which the DNS zone was last updated.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/domainzone.DomainZone has been deprecated in favor of scaleway.domain/zone.Zone"
        },
        "scaleway:index/edgeServicesBackendStage:EdgeServicesBackendStage": {
            "description": "Creates and manages Scaleway Edge Services Backend Stages.\n\n## Example Usage\n\n### With object backend\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {\n    name: \"my-bucket-name\",\n    tags: {\n        foo: \"bar\",\n    },\n});\nconst mainPipeline = new scaleway.edgeservices.Pipeline(\"main\", {name: \"my-pipeline\"});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: mainPipeline.id,\n    s3BackendConfig: {\n        bucketName: main.name,\n        bucketRegion: \"fr-par\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\",\n    name=\"my-bucket-name\",\n    tags={\n        \"foo\": \"bar\",\n    })\nmain_pipeline = scaleway.edgeservices.Pipeline(\"main\", name=\"my-pipeline\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main_pipeline.id,\n    s3_backend_config={\n        \"bucket_name\": main.name,\n        \"bucket_region\": \"fr-par\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"my-bucket-name\",\n        Tags = \n        {\n            { \"foo\", \"bar\" },\n        },\n    });\n\n    var mainPipeline = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = mainPipeline.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = main.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket-name\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPipeline, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: mainPipeline.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   main.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"my-bucket-name\")\n            .tags(Map.of(\"foo\", \"bar\"))\n            .build());\n\n        var mainPipeline = new Pipeline(\"mainPipeline\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(mainPipeline.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(main.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-bucket-name\n      tags:\n        foo: bar\n  mainPipeline:\n    type: scaleway:edgeservices:Pipeline\n    name: main\n    properties:\n      name: my-pipeline\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${mainPipeline.id}\n      s3BackendConfig:\n        bucketName: ${main.name}\n        bucketRegion: fr-par\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With LB backend\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.loadbalancers.LoadBalancer(\"main\", {\n    ipIds: [mainScalewayLbIp.id],\n    zone: \"fr-par-1\",\n    type: \"LB-S\",\n});\nconst mainFrontend = new scaleway.loadbalancers.Frontend(\"main\", {\n    lbId: main.id,\n    backendId: mainScalewayLbBackend.id,\n    name: \"frontend01\",\n    inboundPort: 443,\n    certificateIds: [cert01.id],\n});\nconst mainPipeline = new scaleway.edgeservices.Pipeline(\"main\", {name: \"my-pipeline\"});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: mainPipeline.id,\n    lbBackendConfigs: [{\n        lbConfig: {\n            id: main.id,\n            frontendId: id,\n            isSsl: true,\n            zone: \"fr-par-1\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.loadbalancers.LoadBalancer(\"main\",\n    ip_ids=[main_scaleway_lb_ip[\"id\"]],\n    zone=\"fr-par-1\",\n    type=\"LB-S\")\nmain_frontend = scaleway.loadbalancers.Frontend(\"main\",\n    lb_id=main.id,\n    backend_id=main_scaleway_lb_backend[\"id\"],\n    name=\"frontend01\",\n    inbound_port=443,\n    certificate_ids=[cert01[\"id\"]])\nmain_pipeline = scaleway.edgeservices.Pipeline(\"main\", name=\"my-pipeline\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main_pipeline.id,\n    lb_backend_configs=[{\n        \"lb_config\": {\n            \"id\": main.id,\n            \"frontend_id\": id,\n            \"is_ssl\": True,\n            \"zone\": \"fr-par-1\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Loadbalancers.LoadBalancer(\"main\", new()\n    {\n        IpIds = new[]\n        {\n            mainScalewayLbIp.Id,\n        },\n        Zone = \"fr-par-1\",\n        Type = \"LB-S\",\n    });\n\n    var mainFrontend = new Scaleway.Loadbalancers.Frontend(\"main\", new()\n    {\n        LbId = main.Id,\n        BackendId = mainScalewayLbBackend.Id,\n        Name = \"frontend01\",\n        InboundPort = 443,\n        CertificateIds = new[]\n        {\n            cert01.Id,\n        },\n    });\n\n    var mainPipeline = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = mainPipeline.Id,\n        LbBackendConfigs = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.BackendStageLbBackendConfigArgs\n            {\n                LbConfig = new Scaleway.Edgeservices.Inputs.BackendStageLbBackendConfigLbConfigArgs\n                {\n                    Id = main.Id,\n                    FrontendId = id,\n                    IsSsl = true,\n                    Zone = \"fr-par-1\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := loadbalancers.NewLoadBalancer(ctx, \"main\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tmainScalewayLbIp.Id,\n\t\t\t},\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewFrontend(ctx, \"main\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        main.ID(),\n\t\t\tBackendId:   pulumi.Any(mainScalewayLbBackend.Id),\n\t\t\tName:        pulumi.String(\"frontend01\"),\n\t\t\tInboundPort: pulumi.Int(443),\n\t\t\tCertificateIds: pulumi.StringArray{\n\t\t\t\tcert01.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPipeline, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName: pulumi.String(\"my-pipeline\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: mainPipeline.ID(),\n\t\t\tLbBackendConfigs: edgeservices.BackendStageLbBackendConfigArray{\n\t\t\t\t\u0026edgeservices.BackendStageLbBackendConfigArgs{\n\t\t\t\t\tLbConfig: \u0026edgeservices.BackendStageLbBackendConfigLbConfigArgs{\n\t\t\t\t\t\tId:         main.ID(),\n\t\t\t\t\t\tFrontendId: pulumi.Any(id),\n\t\t\t\t\t\tIsSsl:      pulumi.Bool(true),\n\t\t\t\t\t\tZone:       pulumi.String(\"fr-par-1\"),\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.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageLbBackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageLbBackendConfigLbConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new LoadBalancer(\"main\", LoadBalancerArgs.builder()\n            .ipIds(mainScalewayLbIp.id())\n            .zone(\"fr-par-1\")\n            .type(\"LB-S\")\n            .build());\n\n        var mainFrontend = new Frontend(\"mainFrontend\", FrontendArgs.builder()\n            .lbId(main.id())\n            .backendId(mainScalewayLbBackend.id())\n            .name(\"frontend01\")\n            .inboundPort(443)\n            .certificateIds(cert01.id())\n            .build());\n\n        var mainPipeline = new Pipeline(\"mainPipeline\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(mainPipeline.id())\n            .lbBackendConfigs(BackendStageLbBackendConfigArgs.builder()\n                .lbConfig(BackendStageLbBackendConfigLbConfigArgs.builder()\n                    .id(main.id())\n                    .frontendId(id)\n                    .isSsl(true)\n                    .zone(\"fr-par-1\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipIds:\n        - ${mainScalewayLbIp.id}\n      zone: fr-par-1\n      type: LB-S\n  mainFrontend:\n    type: scaleway:loadbalancers:Frontend\n    name: main\n    properties:\n      lbId: ${main.id}\n      backendId: ${mainScalewayLbBackend.id}\n      name: frontend01\n      inboundPort: '443'\n      certificateIds:\n        - ${cert01.id}\n  mainPipeline:\n    type: scaleway:edgeservices:Pipeline\n    name: main\n    properties:\n      name: my-pipeline\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${mainPipeline.id}\n      lbBackendConfigs:\n        - lbConfig:\n            id: ${main.id}\n            frontendId: ${id}\n            isSsl: true\n            zone: fr-par-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesBackendStage:EdgeServicesBackendStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the backend stage.\n"
                },
                "lbBackendConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesBackendStageLbBackendConfig:EdgeServicesBackendStageLbBackendConfig"
                    },
                    "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n"
                },
                "s3BackendConfig": {
                    "$ref": "#/types/scaleway:index/EdgeServicesBackendStageS3BackendConfig:EdgeServicesBackendStageS3BackendConfig",
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the backend stage.\n"
                }
            },
            "required": [
                "createdAt",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "lbBackendConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesBackendStageLbBackendConfig:EdgeServicesBackendStageLbBackendConfig"
                    },
                    "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "s3BackendConfig": {
                    "$ref": "#/types/scaleway:index/EdgeServicesBackendStageS3BackendConfig:EdgeServicesBackendStageS3BackendConfig",
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesBackendStage resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the backend stage.\n"
                    },
                    "lbBackendConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/EdgeServicesBackendStageLbBackendConfig:EdgeServicesBackendStageLbBackendConfig"
                        },
                        "description": "The Scaleway Load Balancer linked to the backend stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the backend stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "s3BackendConfig": {
                        "$ref": "#/types/scaleway:index/EdgeServicesBackendStageS3BackendConfig:EdgeServicesBackendStageS3BackendConfig",
                        "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the backend stage.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicesbackendstage.EdgeServicesBackendStage has been deprecated in favor of scaleway.edgeservices/backendstage.BackendStage"
        },
        "scaleway:index/edgeServicesCacheStage:EdgeServicesCacheStage": {
            "description": "Creates and manages Scaleway Edge Services Cache Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    backendStageId: mainScalewayEdgeServicesBackendStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    backend_stage_id=main_scaleway_edge_services_backend_stage[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        BackendStageId = mainScalewayEdgeServicesBackendStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:     pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tBackendStageId: pulumi.Any(mainScalewayEdgeServicesBackendStage.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.pulumi.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new CacheStage(\"main\", CacheStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .backendStageId(mainScalewayEdgeServicesBackendStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:CacheStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      backendStageId: ${mainScalewayEdgeServicesBackendStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Purge request\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    backendStageId: mainScalewayEdgeServicesBackendStage.id,\n    purge: [{\n        pipelineId: mainScalewayEdgeServicesPipeline.id,\n        all: true,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    backend_stage_id=main_scaleway_edge_services_backend_stage[\"id\"],\n    purge=[{\n        \"pipelineId\": main_scaleway_edge_services_pipeline[\"id\"],\n        \"all\": True,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        BackendStageId = mainScalewayEdgeServicesBackendStage.Id,\n        Purge = new[]\n        {\n            \n            {\n                { \"pipelineId\", mainScalewayEdgeServicesPipeline.Id },\n                { \"all\", true },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:     pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tBackendStageId: pulumi.Any(mainScalewayEdgeServicesBackendStage.Id),\n\t\t\tPurge: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"pipelineId\": mainScalewayEdgeServicesPipeline.Id,\n\t\t\t\t\t\"all\":        true,\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.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new CacheStage(\"main\", CacheStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .backendStageId(mainScalewayEdgeServicesBackendStage.id())\n            .purge(Arrays.asList(Map.ofEntries(\n                Map.entry(\"pipelineId\", mainScalewayEdgeServicesPipeline.id()),\n                Map.entry(\"all\", true)\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:CacheStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      backendStageId: ${mainScalewayEdgeServicesBackendStage.id}\n      purge:\n        - pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n          all: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCache stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesCacheStage:EdgeServicesCacheStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the cache stage.\n"
                },
                "fallbackTtl": {
                    "type": "integer",
                    "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                },
                "includeCookies": {
                    "type": "boolean",
                    "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n"
                },
                "purgeRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesCacheStagePurgeRequest:EdgeServicesCacheStagePurgeRequest"
                    },
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "refreshCache": {
                    "type": "string",
                    "description": "Trigger a refresh of the cache by changing this field's value.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the cache stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "required": [
                "backendStageId",
                "createdAt",
                "pipelineId",
                "projectId",
                "routeStageId",
                "updatedAt",
                "wafStageId"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "fallbackTtl": {
                    "type": "integer",
                    "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                },
                "includeCookies": {
                    "type": "boolean",
                    "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "purgeRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesCacheStagePurgeRequest:EdgeServicesCacheStagePurgeRequest"
                    },
                    "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                },
                "refreshCache": {
                    "type": "string",
                    "description": "Trigger a refresh of the cache by changing this field's value.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesCacheStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the cache stage.\n"
                    },
                    "fallbackTtl": {
                        "type": "integer",
                        "description": "The Time To Live (TTL) in seconds. Defines how long content is cached.\n"
                    },
                    "includeCookies": {
                        "type": "boolean",
                        "description": "Defines whether responses to requests with cookies must be stored in the cache.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cache stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "purgeRequests": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/EdgeServicesCacheStagePurgeRequest:EdgeServicesCacheStagePurgeRequest"
                        },
                        "description": "The Scaleway Object Storage origin bucket (S3) linked to the backend stage.\n"
                    },
                    "refreshCache": {
                        "type": "string",
                        "description": "Trigger a refresh of the cache by changing this field's value.\n"
                    },
                    "routeStageId": {
                        "type": "string",
                        "description": "The route stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the cache stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The WAF stage ID the cache stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicescachestage.EdgeServicesCacheStage has been deprecated in favor of scaleway.edgeservices/cachestage.CacheStage"
        },
        "scaleway:index/edgeServicesDnsStage:EdgeServicesDnsStage": {
            "description": "Creates and manages Scaleway Edge Services DNS Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    fqdns: [\"subdomain.example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    fqdns=[\"subdomain.example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.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.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new DnsStage(\"main\", DnsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:DnsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      fqdns:\n        - subdomain.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesDnsStage:EdgeServicesDnsStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the DNS stage.\n"
                },
                "defaultFqdn": {
                    "type": "string",
                    "description": "The Default Fully Qualified Domain Name attached to the stage.\n"
                },
                "fqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n"
                },
                "tlsStageId": {
                    "type": "string",
                    "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the stage.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the DNS stage.\n"
                }
            },
            "required": [
                "backendStageId",
                "cacheStageId",
                "createdAt",
                "defaultFqdn",
                "fqdns",
                "pipelineId",
                "projectId",
                "tlsStageId",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                },
                "fqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tlsStageId": {
                    "type": "string",
                    "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesDnsStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "cacheStageId": {
                        "type": "string",
                        "description": "The cache stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the DNS stage.\n"
                    },
                    "defaultFqdn": {
                        "type": "string",
                        "description": "The Default Fully Qualified Domain Name attached to the stage.\n"
                    },
                    "fqdns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Fully Qualified Domain Name (in the format subdomain.example.com) to attach to the stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the DNS stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tlsStageId": {
                        "type": "string",
                        "description": "The TLS stage ID the DNS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tlsStageId`\" pulumi-lang-dotnet=\"`TlsStageId`\" pulumi-lang-go=\"`tlsStageId`\" pulumi-lang-python=\"`tls_stage_id`\" pulumi-lang-yaml=\"`tlsStageId`\" pulumi-lang-java=\"`tlsStageId`\"\u003e`tlsStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the stage.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the DNS stage.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicesdnsstage.EdgeServicesDnsStage has been deprecated in favor of scaleway.edgeservices/dnsstage.DnsStage"
        },
        "scaleway:index/edgeServicesHeadStage:EdgeServicesHeadStage": {
            "description": "Sets the Scaleway Edge Services head stage of your pipeline.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-edge_services-pipeline\",\n    description: \"pipeline description\",\n});\nconst mainDnsStage = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: main.id,\n    tlsStageId: mainScalewayEdgeServicesTlsStage.id,\n    fqdns: [\"subdomain.example.com\"],\n});\nconst mainHeadStage = new scaleway.edgeservices.HeadStage(\"main\", {\n    pipelineId: main.id,\n    headStageId: mainDnsStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-edge_services-pipeline\",\n    description=\"pipeline description\")\nmain_dns_stage = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main.id,\n    tls_stage_id=main_scaleway_edge_services_tls_stage[\"id\"],\n    fqdns=[\"subdomain.example.com\"])\nmain_head_stage = scaleway.edgeservices.HeadStage(\"main\",\n    pipeline_id=main.id,\n    head_stage_id=main_dns_stage.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-edge_services-pipeline\",\n        Description = \"pipeline description\",\n    });\n\n    var mainDnsStage = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        TlsStageId = mainScalewayEdgeServicesTlsStage.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n    var mainHeadStage = new Scaleway.Edgeservices.HeadStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        HeadStageId = mainDnsStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-edge_services-pipeline\"),\n\t\t\tDescription: pulumi.String(\"pipeline description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDnsStage, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tTlsStageId: pulumi.Any(mainScalewayEdgeServicesTlsStage.Id),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewHeadStage(ctx, \"main\", \u0026edgeservices.HeadStageArgs{\n\t\t\tPipelineId:  main.ID(),\n\t\t\tHeadStageId: mainDnsStage.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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport com.pulumi.scaleway.edgeservices.HeadStage;\nimport com.pulumi.scaleway.edgeservices.HeadStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-edge_services-pipeline\")\n            .description(\"pipeline description\")\n            .build());\n\n        var mainDnsStage = new DnsStage(\"mainDnsStage\", DnsStageArgs.builder()\n            .pipelineId(main.id())\n            .tlsStageId(mainScalewayEdgeServicesTlsStage.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n        var mainHeadStage = new HeadStage(\"mainHeadStage\", HeadStageArgs.builder()\n            .pipelineId(main.id())\n            .headStageId(mainDnsStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-edge_services-pipeline\n      description: pipeline description\n  mainDnsStage:\n    type: scaleway:edgeservices:DnsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      tlsStageId: ${mainScalewayEdgeServicesTlsStage.id}\n      fqdns:\n        - subdomain.example.com\n  mainHeadStage:\n    type: scaleway:edgeservices:HeadStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      headStageId: ${mainDnsStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHead stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesHeadStage:EdgeServicesHeadStage main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "headStageId": {
                    "type": "string",
                    "description": "The ID of head stage of the pipeline.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                }
            },
            "required": [
                "headStageId",
                "pipelineId"
            ],
            "inputProperties": {
                "headStageId": {
                    "type": "string",
                    "description": "The ID of head stage of the pipeline.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesHeadStage resources.\n",
                "properties": {
                    "headStageId": {
                        "type": "string",
                        "description": "The ID of head stage of the pipeline.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicesheadstage.EdgeServicesHeadStage has been deprecated in favor of scaleway.edgeservices/headstage.HeadStage"
        },
        "scaleway:index/edgeServicesPipeline:EdgeServicesPipeline": {
            "description": "Creates and manages Scaleway Edge Services Pipelines.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"pipeline-name\",\n    description: \"pipeline description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"pipeline-name\",\n    description=\"pipeline description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"pipeline-name\",\n        Description = \"pipeline description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"pipeline-name\"),\n\t\t\tDescription: pulumi.String(\"pipeline 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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"pipeline-name\")\n            .description(\"pipeline description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: pipeline-name\n      description: pipeline description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete pipeline\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"pipeline-name\",\n    description: \"pipeline description\",\n});\nconst mainBackendStage = new scaleway.edgeservices.BackendStage(\"main\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: \"my-bucket-name\",\n        bucketRegion: \"fr-par\",\n    },\n});\nconst mainWafStage = new scaleway.edgeservices.WafStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: mainBackendStage.id,\n    mode: \"enable\",\n    paranoiaLevel: 3,\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    wafStageId: mainWafStage.id,\n    rules: [{\n        backendStageId: mainBackendStage.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \".*\",\n            },\n        },\n    }],\n});\nconst mainCacheStage = new scaleway.edgeservices.CacheStage(\"main\", {\n    pipelineId: main.id,\n    routeStageId: mainRouteStage.id,\n});\nconst mainTlsStage = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: main.id,\n    cacheStageId: mainCacheStage.id,\n    managedCertificate: true,\n});\nconst mainDnsStage = new scaleway.edgeservices.DnsStage(\"main\", {\n    pipelineId: main.id,\n    tlsStageId: mainTlsStage.id,\n    fqdns: [\"subdomain.example.com\"],\n});\nconst mainHeadStage = new scaleway.edgeservices.HeadStage(\"main\", {\n    pipelineId: main.id,\n    headStageId: mainDnsStage.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"pipeline-name\",\n    description=\"pipeline description\")\nmain_backend_stage = scaleway.edgeservices.BackendStage(\"main\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": \"my-bucket-name\",\n        \"bucket_region\": \"fr-par\",\n    })\nmain_waf_stage = scaleway.edgeservices.WafStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=main_backend_stage.id,\n    mode=\"enable\",\n    paranoia_level=3)\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    waf_stage_id=main_waf_stage.id,\n    rules=[{\n        \"backend_stage_id\": main_backend_stage.id,\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \".*\",\n            },\n        },\n    }])\nmain_cache_stage = scaleway.edgeservices.CacheStage(\"main\",\n    pipeline_id=main.id,\n    route_stage_id=main_route_stage.id)\nmain_tls_stage = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main.id,\n    cache_stage_id=main_cache_stage.id,\n    managed_certificate=True)\nmain_dns_stage = scaleway.edgeservices.DnsStage(\"main\",\n    pipeline_id=main.id,\n    tls_stage_id=main_tls_stage.id,\n    fqdns=[\"subdomain.example.com\"])\nmain_head_stage = scaleway.edgeservices.HeadStage(\"main\",\n    pipeline_id=main.id,\n    head_stage_id=main_dns_stage.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"pipeline-name\",\n        Description = \"pipeline description\",\n    });\n\n    var mainBackendStage = new Scaleway.Edgeservices.BackendStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = \"my-bucket-name\",\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var mainWafStage = new Scaleway.Edgeservices.WafStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = mainBackendStage.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 3,\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        WafStageId = mainWafStage.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = mainBackendStage.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \".*\",\n                    },\n                },\n            },\n        },\n    });\n\n    var mainCacheStage = new Scaleway.Edgeservices.CacheStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        RouteStageId = mainRouteStage.Id,\n    });\n\n    var mainTlsStage = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        CacheStageId = mainCacheStage.Id,\n        ManagedCertificate = true,\n    });\n\n    var mainDnsStage = new Scaleway.Edgeservices.DnsStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        TlsStageId = mainTlsStage.Id,\n        Fqdns = new[]\n        {\n            \"subdomain.example.com\",\n        },\n    });\n\n    var mainHeadStage = new Scaleway.Edgeservices.HeadStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        HeadStageId = mainDnsStage.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"pipeline-name\"),\n\t\t\tDescription: pulumi.String(\"pipeline description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainBackendStage, err := edgeservices.NewBackendStage(ctx, \"main\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   pulumi.String(\"my-bucket-name\"),\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainWafStage, err := edgeservices.NewWafStage(ctx, \"main\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: mainBackendStage.ID(),\n\t\t\tMode:           pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel:  pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainRouteStage, err := edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tWafStageId: mainWafStage.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: mainBackendStage.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\".*\"),\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\tmainCacheStage, err := edgeservices.NewCacheStage(ctx, \"main\", \u0026edgeservices.CacheStageArgs{\n\t\t\tPipelineId:   main.ID(),\n\t\t\tRouteStageId: mainRouteStage.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainTlsStage, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId:         main.ID(),\n\t\t\tCacheStageId:       mainCacheStage.ID(),\n\t\t\tManagedCertificate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainDnsStage, err := edgeservices.NewDnsStage(ctx, \"main\", \u0026edgeservices.DnsStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tTlsStageId: mainTlsStage.ID(),\n\t\t\tFqdns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"subdomain.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewHeadStage(ctx, \"main\", \u0026edgeservices.HeadStageArgs{\n\t\t\tPipelineId:  main.ID(),\n\t\t\tHeadStageId: mainDnsStage.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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport com.pulumi.scaleway.edgeservices.CacheStage;\nimport com.pulumi.scaleway.edgeservices.CacheStageArgs;\nimport com.pulumi.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport com.pulumi.scaleway.edgeservices.DnsStage;\nimport com.pulumi.scaleway.edgeservices.DnsStageArgs;\nimport com.pulumi.scaleway.edgeservices.HeadStage;\nimport com.pulumi.scaleway.edgeservices.HeadStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"pipeline-name\")\n            .description(\"pipeline description\")\n            .build());\n\n        var mainBackendStage = new BackendStage(\"mainBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(\"my-bucket-name\")\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var mainWafStage = new WafStage(\"mainWafStage\", WafStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(mainBackendStage.id())\n            .mode(\"enable\")\n            .paranoiaLevel(3)\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .wafStageId(mainWafStage.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(mainBackendStage.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\".*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n        var mainCacheStage = new CacheStage(\"mainCacheStage\", CacheStageArgs.builder()\n            .pipelineId(main.id())\n            .routeStageId(mainRouteStage.id())\n            .build());\n\n        var mainTlsStage = new TlsStage(\"mainTlsStage\", TlsStageArgs.builder()\n            .pipelineId(main.id())\n            .cacheStageId(mainCacheStage.id())\n            .managedCertificate(true)\n            .build());\n\n        var mainDnsStage = new DnsStage(\"mainDnsStage\", DnsStageArgs.builder()\n            .pipelineId(main.id())\n            .tlsStageId(mainTlsStage.id())\n            .fqdns(\"subdomain.example.com\")\n            .build());\n\n        var mainHeadStage = new HeadStage(\"mainHeadStage\", HeadStageArgs.builder()\n            .pipelineId(main.id())\n            .headStageId(mainDnsStage.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: pipeline-name\n      description: pipeline description\n  mainDnsStage:\n    type: scaleway:edgeservices:DnsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      tlsStageId: ${mainTlsStage.id}\n      fqdns:\n        - subdomain.example.com\n  mainTlsStage:\n    type: scaleway:edgeservices:TlsStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      cacheStageId: ${mainCacheStage.id}\n      managedCertificate: true\n  mainCacheStage:\n    type: scaleway:edgeservices:CacheStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      routeStageId: ${mainRouteStage.id}\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      wafStageId: ${mainWafStage.id}\n      rules:\n        - backendStageId: ${mainBackendStage.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n            pathFilter:\n              pathFilterType: regex\n              value: .*\n  mainWafStage:\n    type: scaleway:edgeservices:WafStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${mainBackendStage.id}\n      mode: enable\n      paranoiaLevel: 3\n  mainBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: my-bucket-name\n        bucketRegion: fr-par\n  mainHeadStage:\n    type: scaleway:edgeservices:HeadStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      headStageId: ${mainDnsStage.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPipelines can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesPipeline:EdgeServicesPipeline basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the pipeline.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the pipeline.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of user pipeline.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the pipeline.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "projectId",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the pipeline.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesPipeline resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the pipeline.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the pipeline.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the pipeline is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of user pipeline.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the pipeline.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicespipeline.EdgeServicesPipeline has been deprecated in favor of scaleway.edgeservices/pipeline.Pipeline"
        },
        "scaleway:index/edgeServicesPlan:EdgeServicesPlan": {
            "description": "Creates and manages Scaleway Edge Services plans.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Plan(\"main\", {name: \"starter\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Plan(\"main\", name=\"starter\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Plan(\"main\", new()\n    {\n        Name = \"starter\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewPlan(ctx, \"main\", \u0026edgeservices.PlanArgs{\n\t\t\tName: pulumi.String(\"starter\"),\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.scaleway.edgeservices.Plan;\nimport com.pulumi.scaleway.edgeservices.PlanArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Plan(\"main\", PlanArgs.builder()\n            .name(\"starter\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Plan\n    properties:\n      name: starter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlans can be imported using `{project_id}/{plan_name}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesPlan:EdgeServicesPlan main 11111111-1111-1111-1111-111111111111/starter\n```\n\n",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the plan.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n"
                }
            },
            "required": [
                "name",
                "projectId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the plan.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesPlan resources.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the plan.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the plan is associated with.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicesplan.EdgeServicesPlan has been deprecated in favor of scaleway.edgeservices/plan.Plan"
        },
        "scaleway:index/edgeServicesRouteStage:EdgeServicesRouteStage": {
            "description": "Creates and manages Scaleway Edge Services Route Stages.\n\n## Example Usage\n\n### Default to WAF with backend rules\n\nRoutes all unmatched traffic through a WAF stage, while requests matching specific patterns are sent directly to a backend stage.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    wafStageId: waf.id,\n    rules: [{\n        backendStageId: backend.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \".*\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    waf_stage_id=waf[\"id\"],\n    rules=[{\n        \"backend_stage_id\": backend[\"id\"],\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \".*\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        WafStageId = waf.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = backend.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \".*\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tWafStageId: pulumi.Any(waf.Id),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: pulumi.Any(backend.Id),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\".*\"),\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.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new RouteStage(\"main\", RouteStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .wafStageId(waf.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(backend.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\".*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:RouteStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      wafStageId: ${waf.id}\n      rules:\n        - backendStageId: ${backend.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n            pathFilter:\n              pathFilterType: regex\n              value: .*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Host-based routing\n\nRoutes requests to different backends based on the hostname, allowing a single pipeline to serve multiple domains.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-pipeline\",\n    description: \"Multi-host pipeline with host-based routing\",\n});\nconst api = new scaleway.object.Bucket(\"api\", {name: \"my-api-bucket\"});\nconst static = new scaleway.object.Bucket(\"static\", {name: \"my-static-site\"});\nconst apiBackendStage = new scaleway.edgeservices.BackendStage(\"api\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: api.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst staticBackendStage = new scaleway.edgeservices.BackendStage(\"static\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: static.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: staticBackendStage.id,\n    rules: [{\n        backendStageId: apiBackendStage.id,\n        ruleHttpMatch: {\n            hostFilter: {\n                hostFilterType: \"regex\",\n                value: \"api\\\\.example\\\\.com\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-pipeline\",\n    description=\"Multi-host pipeline with host-based routing\")\napi = scaleway.object.Bucket(\"api\", name=\"my-api-bucket\")\nstatic = scaleway.object.Bucket(\"static\", name=\"my-static-site\")\napi_backend_stage = scaleway.edgeservices.BackendStage(\"api\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": api.name,\n        \"bucket_region\": \"fr-par\",\n    })\nstatic_backend_stage = scaleway.edgeservices.BackendStage(\"static\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": static.name,\n        \"bucket_region\": \"fr-par\",\n    })\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=static_backend_stage.id,\n    rules=[{\n        \"backend_stage_id\": api_backend_stage.id,\n        \"rule_http_match\": {\n            \"host_filter\": {\n                \"host_filter_type\": \"regex\",\n                \"value\": \"api\\\\.example\\\\.com\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n        Description = \"Multi-host pipeline with host-based routing\",\n    });\n\n    var api = new Scaleway.Object.Bucket(\"api\", new()\n    {\n        Name = \"my-api-bucket\",\n    });\n\n    var @static = new Scaleway.Object.Bucket(\"static\", new()\n    {\n        Name = \"my-static-site\",\n    });\n\n    var apiBackendStage = new Scaleway.Edgeservices.BackendStage(\"api\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = api.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var staticBackendStage = new Scaleway.Edgeservices.BackendStage(\"static\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = @static.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = staticBackendStage.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                BackendStageId = apiBackendStage.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    HostFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchHostFilterArgs\n                    {\n                        HostFilterType = \"regex\",\n                        Value = \"api\\\\.example\\\\.com\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-pipeline\"),\n\t\t\tDescription: pulumi.String(\"Multi-host pipeline with host-based routing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapi, err := object.NewBucket(ctx, \"api\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-api-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := object.NewBucket(ctx, \"static\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-static-site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapiBackendStage, err := edgeservices.NewBackendStage(ctx, \"api\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   api.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBackendStage, err := edgeservices.NewBackendStage(ctx, \"static\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   static.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: staticBackendStage.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tBackendStageId: apiBackendStage.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tHostFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchHostFilterArgs{\n\t\t\t\t\t\t\tHostFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\"api\\\\.example\\\\.com\"),\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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchHostFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .description(\"Multi-host pipeline with host-based routing\")\n            .build());\n\n        var api = new Bucket(\"api\", BucketArgs.builder()\n            .name(\"my-api-bucket\")\n            .build());\n\n        var static_ = new Bucket(\"static\", BucketArgs.builder()\n            .name(\"my-static-site\")\n            .build());\n\n        var apiBackendStage = new BackendStage(\"apiBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(api.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var staticBackendStage = new BackendStage(\"staticBackendStage\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(static_.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(staticBackendStage.id())\n            .rules(RouteStageRuleArgs.builder()\n                .backendStageId(apiBackendStage.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .hostFilter(RouteStageRuleRuleHttpMatchHostFilterArgs.builder()\n                        .hostFilterType(\"regex\")\n                        .value(\"api\\\\.example\\\\.com\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-pipeline\n      description: Multi-host pipeline with host-based routing\n  api:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-api-bucket\n  static:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-static-site\n  apiBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: api\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${api.name}\n        bucketRegion: fr-par\n  staticBackendStage:\n    type: scaleway:edgeservices:BackendStage\n    name: static\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${static.name}\n        bucketRegion: fr-par\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${staticBackendStage.id}\n      rules:\n        - backendStageId: ${apiBackendStage.id}\n          ruleHttpMatch:\n            hostFilter:\n              hostFilterType: regex\n              value: api\\.example\\.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Default to backend with selective WAF protection\n\nServes static content directly from a backend by default, while routing API traffic through a WAF stage for protection against common web attacks.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.Pipeline(\"main\", {\n    name: \"my-pipeline\",\n    description: \"Static site with WAF-protected API\",\n});\nconst mainBucket = new scaleway.object.Bucket(\"main\", {name: \"my-static-site\"});\nconst static = new scaleway.edgeservices.BackendStage(\"static\", {\n    pipelineId: main.id,\n    s3BackendConfig: {\n        bucketName: mainBucket.name,\n        bucketRegion: \"fr-par\",\n    },\n});\nconst api = new scaleway.edgeservices.WafStage(\"api\", {\n    pipelineId: main.id,\n    backendStageId: static.id,\n    mode: \"enable\",\n    paranoiaLevel: 2,\n});\nconst mainRouteStage = new scaleway.edgeservices.RouteStage(\"main\", {\n    pipelineId: main.id,\n    backendStageId: static.id,\n    rules: [{\n        wafStageId: api.id,\n        ruleHttpMatch: {\n            methodFilters: [\n                \"get\",\n                \"post\",\n                \"put\",\n                \"patch\",\n                \"delete\",\n            ],\n            pathFilter: {\n                pathFilterType: \"regex\",\n                value: \"/api/.*\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.Pipeline(\"main\",\n    name=\"my-pipeline\",\n    description=\"Static site with WAF-protected API\")\nmain_bucket = scaleway.object.Bucket(\"main\", name=\"my-static-site\")\nstatic = scaleway.edgeservices.BackendStage(\"static\",\n    pipeline_id=main.id,\n    s3_backend_config={\n        \"bucket_name\": main_bucket.name,\n        \"bucket_region\": \"fr-par\",\n    })\napi = scaleway.edgeservices.WafStage(\"api\",\n    pipeline_id=main.id,\n    backend_stage_id=static.id,\n    mode=\"enable\",\n    paranoia_level=2)\nmain_route_stage = scaleway.edgeservices.RouteStage(\"main\",\n    pipeline_id=main.id,\n    backend_stage_id=static.id,\n    rules=[{\n        \"waf_stage_id\": api.id,\n        \"rule_http_match\": {\n            \"method_filters\": [\n                \"get\",\n                \"post\",\n                \"put\",\n                \"patch\",\n                \"delete\",\n            ],\n            \"path_filter\": {\n                \"path_filter_type\": \"regex\",\n                \"value\": \"/api/.*\",\n            },\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.Pipeline(\"main\", new()\n    {\n        Name = \"my-pipeline\",\n        Description = \"Static site with WAF-protected API\",\n    });\n\n    var mainBucket = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"my-static-site\",\n    });\n\n    var @static = new Scaleway.Edgeservices.BackendStage(\"static\", new()\n    {\n        PipelineId = main.Id,\n        S3BackendConfig = new Scaleway.Edgeservices.Inputs.BackendStageS3BackendConfigArgs\n        {\n            BucketName = mainBucket.Name,\n            BucketRegion = \"fr-par\",\n        },\n    });\n\n    var api = new Scaleway.Edgeservices.WafStage(\"api\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = @static.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 2,\n    });\n\n    var mainRouteStage = new Scaleway.Edgeservices.RouteStage(\"main\", new()\n    {\n        PipelineId = main.Id,\n        BackendStageId = @static.Id,\n        Rules = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.RouteStageRuleArgs\n            {\n                WafStageId = api.Id,\n                RuleHttpMatch = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchArgs\n                {\n                    MethodFilters = new[]\n                    {\n                        \"get\",\n                        \"post\",\n                        \"put\",\n                        \"patch\",\n                        \"delete\",\n                    },\n                    PathFilter = new Scaleway.Edgeservices.Inputs.RouteStageRuleRuleHttpMatchPathFilterArgs\n                    {\n                        PathFilterType = \"regex\",\n                        Value = \"/api/.*\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := edgeservices.NewPipeline(ctx, \"main\", \u0026edgeservices.PipelineArgs{\n\t\t\tName:        pulumi.String(\"my-pipeline\"),\n\t\t\tDescription: pulumi.String(\"Static site with WAF-protected API\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainBucket, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-static-site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := edgeservices.NewBackendStage(ctx, \"static\", \u0026edgeservices.BackendStageArgs{\n\t\t\tPipelineId: main.ID(),\n\t\t\tS3BackendConfig: \u0026edgeservices.BackendStageS3BackendConfigArgs{\n\t\t\t\tBucketName:   mainBucket.Name,\n\t\t\t\tBucketRegion: pulumi.String(\"fr-par\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapi, err := edgeservices.NewWafStage(ctx, \"api\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: static.ID(),\n\t\t\tMode:           pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel:  pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgeservices.NewRouteStage(ctx, \"main\", \u0026edgeservices.RouteStageArgs{\n\t\t\tPipelineId:     main.ID(),\n\t\t\tBackendStageId: static.ID(),\n\t\t\tRules: edgeservices.RouteStageRuleArray{\n\t\t\t\t\u0026edgeservices.RouteStageRuleArgs{\n\t\t\t\t\tWafStageId: api.ID(),\n\t\t\t\t\tRuleHttpMatch: \u0026edgeservices.RouteStageRuleRuleHttpMatchArgs{\n\t\t\t\t\t\tMethodFilters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"get\"),\n\t\t\t\t\t\t\tpulumi.String(\"post\"),\n\t\t\t\t\t\t\tpulumi.String(\"put\"),\n\t\t\t\t\t\t\tpulumi.String(\"patch\"),\n\t\t\t\t\t\t\tpulumi.String(\"delete\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathFilter: \u0026edgeservices.RouteStageRuleRuleHttpMatchPathFilterArgs{\n\t\t\t\t\t\t\tPathFilterType: pulumi.String(\"regex\"),\n\t\t\t\t\t\t\tValue:          pulumi.String(\"/api/.*\"),\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.pulumi.scaleway.edgeservices.Pipeline;\nimport com.pulumi.scaleway.edgeservices.PipelineArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.edgeservices.BackendStage;\nimport com.pulumi.scaleway.edgeservices.BackendStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.BackendStageS3BackendConfigArgs;\nimport com.pulumi.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport com.pulumi.scaleway.edgeservices.RouteStage;\nimport com.pulumi.scaleway.edgeservices.RouteStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.RouteStageRuleRuleHttpMatchPathFilterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Pipeline(\"main\", PipelineArgs.builder()\n            .name(\"my-pipeline\")\n            .description(\"Static site with WAF-protected API\")\n            .build());\n\n        var mainBucket = new Bucket(\"mainBucket\", BucketArgs.builder()\n            .name(\"my-static-site\")\n            .build());\n\n        var static_ = new BackendStage(\"static\", BackendStageArgs.builder()\n            .pipelineId(main.id())\n            .s3BackendConfig(BackendStageS3BackendConfigArgs.builder()\n                .bucketName(mainBucket.name())\n                .bucketRegion(\"fr-par\")\n                .build())\n            .build());\n\n        var api = new WafStage(\"api\", WafStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(static_.id())\n            .mode(\"enable\")\n            .paranoiaLevel(2)\n            .build());\n\n        var mainRouteStage = new RouteStage(\"mainRouteStage\", RouteStageArgs.builder()\n            .pipelineId(main.id())\n            .backendStageId(static_.id())\n            .rules(RouteStageRuleArgs.builder()\n                .wafStageId(api.id())\n                .ruleHttpMatch(RouteStageRuleRuleHttpMatchArgs.builder()\n                    .methodFilters(                    \n                        \"get\",\n                        \"post\",\n                        \"put\",\n                        \"patch\",\n                        \"delete\")\n                    .pathFilter(RouteStageRuleRuleHttpMatchPathFilterArgs.builder()\n                        .pathFilterType(\"regex\")\n                        .value(\"/api/.*\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:Pipeline\n    properties:\n      name: my-pipeline\n      description: Static site with WAF-protected API\n  mainBucket:\n    type: scaleway:object:Bucket\n    name: main\n    properties:\n      name: my-static-site\n  static:\n    type: scaleway:edgeservices:BackendStage\n    properties:\n      pipelineId: ${main.id}\n      s3BackendConfig:\n        bucketName: ${mainBucket.name}\n        bucketRegion: fr-par\n  api:\n    type: scaleway:edgeservices:WafStage\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${static.id}\n      mode: enable\n      paranoiaLevel: 2\n  mainRouteStage:\n    type: scaleway:edgeservices:RouteStage\n    name: main\n    properties:\n      pipelineId: ${main.id}\n      backendStageId: ${static.id}\n      rules:\n        - wafStageId: ${api.id}\n          ruleHttpMatch:\n            methodFilters:\n              - get\n              - post\n              - put\n              - patch\n              - delete\n            pathFilter:\n              pathFilterType: regex\n              value: /api/.*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoute stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesRouteStage:EdgeServicesRouteStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the route stage.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRule:EdgeServicesRouteStageRule"
                    },
                    "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the route stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "createdAt",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRule:EdgeServicesRouteStageRule"
                    },
                    "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesRouteStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The ID of the backend stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the route stage.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the route stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/EdgeServicesRouteStageRule:EdgeServicesRouteStageRule"
                        },
                        "description": "List of rules to be checked against every HTTP request. The first matching rule will forward the request to its specified target stage. If no rules are matched, the request is forwarded to the default stage defined by \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the route stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The ID of the WAF stage HTTP requests should be forwarded to when no rules are matched. Conflicts with \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicesroutestage.EdgeServicesRouteStage has been deprecated in favor of scaleway.edgeservices/routestage.RouteStage"
        },
        "scaleway:index/edgeServicesTlsStage:EdgeServicesTlsStage": {
            "description": "Creates and manages Scaleway Edge Services TLS Stages.\n\n## Example Usage\n\n### Managed\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    managedCertificate: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    managed_certificate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        ManagedCertificate = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId:         pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tManagedCertificate: 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.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new TlsStage(\"main\", TlsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .managedCertificate(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:TlsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      managedCertificate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a certificate stored in Scaleway Secret Manager\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.TlsStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    secrets: [{\n        secretId: \"11111111-1111-1111-1111-111111111111\",\n        region: \"fr-par\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.TlsStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    secrets=[{\n        \"secret_id\": \"11111111-1111-1111-1111-111111111111\",\n        \"region\": \"fr-par\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.TlsStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Secrets = new[]\n        {\n            new Scaleway.Edgeservices.Inputs.TlsStageSecretArgs\n            {\n                SecretId = \"11111111-1111-1111-1111-111111111111\",\n                Region = \"fr-par\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewTlsStage(ctx, \"main\", \u0026edgeservices.TlsStageArgs{\n\t\t\tPipelineId: pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tSecrets: edgeservices.TlsStageSecretArray{\n\t\t\t\t\u0026edgeservices.TlsStageSecretArgs{\n\t\t\t\t\tSecretId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\t\t\tRegion:   pulumi.String(\"fr-par\"),\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.scaleway.edgeservices.TlsStage;\nimport com.pulumi.scaleway.edgeservices.TlsStageArgs;\nimport com.pulumi.scaleway.edgeservices.inputs.TlsStageSecretArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new TlsStage(\"main\", TlsStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .secrets(TlsStageSecretArgs.builder()\n                .secretId(\"11111111-1111-1111-1111-111111111111\")\n                .region(\"fr-par\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:TlsStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      secrets:\n        - secretId: 11111111-1111-1111-1111-111111111111\n          region: fr-par\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTLS stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesTlsStage:EdgeServicesTlsStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "certificateExpiresAt": {
                    "type": "string",
                    "description": "The expiration date of the certificate.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the TLS stage.\n"
                },
                "managedCertificate": {
                    "type": "boolean",
                    "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n"
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesTlsStageSecret:EdgeServicesTlsStageSecret"
                    },
                    "description": "The TLS secrets.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the TLS stage.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "required": [
                "backendStageId",
                "cacheStageId",
                "certificateExpiresAt",
                "createdAt",
                "managedCertificate",
                "pipelineId",
                "projectId",
                "routeStageId",
                "secrets",
                "updatedAt",
                "wafStageId"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "cacheStageId": {
                    "type": "string",
                    "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "managedCertificate": {
                    "type": "boolean",
                    "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "routeStageId": {
                    "type": "string",
                    "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/EdgeServicesTlsStageSecret:EdgeServicesTlsStageSecret"
                    },
                    "description": "The TLS secrets.\n"
                },
                "wafStageId": {
                    "type": "string",
                    "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                }
            },
            "requiredInputs": [
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesTlsStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The backend stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "cacheStageId": {
                        "type": "string",
                        "description": "The cache stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "certificateExpiresAt": {
                        "type": "string",
                        "description": "The expiration date of the certificate.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the TLS stage.\n"
                    },
                    "managedCertificate": {
                        "type": "boolean",
                        "description": "Set to true when Scaleway generates and manages a Let's Encrypt certificate for the TLS stage/custom endpoint.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the TLS stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "routeStageId": {
                        "type": "string",
                        "description": "The route stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    },
                    "secrets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/EdgeServicesTlsStageSecret:EdgeServicesTlsStageSecret"
                        },
                        "description": "The TLS secrets.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the TLS stage.\n"
                    },
                    "wafStageId": {
                        "type": "string",
                        "description": "The WAF stage ID the TLS stage will be linked to. Only one of \u003cspan pulumi-lang-nodejs=\"`backendStageId`\" pulumi-lang-dotnet=\"`BackendStageId`\" pulumi-lang-go=\"`backendStageId`\" pulumi-lang-python=\"`backend_stage_id`\" pulumi-lang-yaml=\"`backendStageId`\" pulumi-lang-java=\"`backendStageId`\"\u003e`backendStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cacheStageId`\" pulumi-lang-dotnet=\"`CacheStageId`\" pulumi-lang-go=\"`cacheStageId`\" pulumi-lang-python=\"`cache_stage_id`\" pulumi-lang-yaml=\"`cacheStageId`\" pulumi-lang-java=\"`cacheStageId`\"\u003e`cacheStageId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routeStageId`\" pulumi-lang-dotnet=\"`RouteStageId`\" pulumi-lang-go=\"`routeStageId`\" pulumi-lang-python=\"`route_stage_id`\" pulumi-lang-yaml=\"`routeStageId`\" pulumi-lang-java=\"`routeStageId`\"\u003e`routeStageId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wafStageId`\" pulumi-lang-dotnet=\"`WafStageId`\" pulumi-lang-go=\"`wafStageId`\" pulumi-lang-python=\"`waf_stage_id`\" pulumi-lang-yaml=\"`wafStageId`\" pulumi-lang-java=\"`wafStageId`\"\u003e`wafStageId`\u003c/span\u003e should be specified.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeservicestlsstage.EdgeServicesTlsStage has been deprecated in favor of scaleway.edgeservices/tlsstage.TlsStage"
        },
        "scaleway:index/edgeServicesWafStage:EdgeServicesWafStage": {
            "description": "Creates and manages Scaleway Edge Services WAF Stages.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.edgeservices.WafStage(\"main\", {\n    pipelineId: mainScalewayEdgeServicesPipeline.id,\n    mode: \"enable\",\n    paranoiaLevel: 3,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.edgeservices.WafStage(\"main\",\n    pipeline_id=main_scaleway_edge_services_pipeline[\"id\"],\n    mode=\"enable\",\n    paranoia_level=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Edgeservices.WafStage(\"main\", new()\n    {\n        PipelineId = mainScalewayEdgeServicesPipeline.Id,\n        Mode = \"enable\",\n        ParanoiaLevel = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/edgeservices\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := edgeservices.NewWafStage(ctx, \"main\", \u0026edgeservices.WafStageArgs{\n\t\t\tPipelineId:    pulumi.Any(mainScalewayEdgeServicesPipeline.Id),\n\t\t\tMode:          pulumi.String(\"enable\"),\n\t\t\tParanoiaLevel: pulumi.Int(3),\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.scaleway.edgeservices.WafStage;\nimport com.pulumi.scaleway.edgeservices.WafStageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new WafStage(\"main\", WafStageArgs.builder()\n            .pipelineId(mainScalewayEdgeServicesPipeline.id())\n            .mode(\"enable\")\n            .paranoiaLevel(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:edgeservices:WafStage\n    properties:\n      pipelineId: ${mainScalewayEdgeServicesPipeline.id}\n      mode: enable\n      paranoiaLevel: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWAF stages can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/edgeServicesWafStage:EdgeServicesWafStage basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the WAF stage.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                },
                "paranoiaLevel": {
                    "type": "integer",
                    "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the WAF stage.\n"
                }
            },
            "required": [
                "backendStageId",
                "createdAt",
                "mode",
                "paranoiaLevel",
                "pipelineId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "backendStageId": {
                    "type": "string",
                    "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                },
                "paranoiaLevel": {
                    "type": "integer",
                    "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                },
                "pipelineId": {
                    "type": "string",
                    "description": "The ID of the pipeline.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "paranoiaLevel",
                "pipelineId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EdgeServicesWafStage resources.\n",
                "properties": {
                    "backendStageId": {
                        "type": "string",
                        "description": "The ID of the backend stage to forward requests to after the WAF stage.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the WAF stage.\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "The mode defining WAF behavior (\u003cspan pulumi-lang-nodejs=\"`disable`\" pulumi-lang-dotnet=\"`Disable`\" pulumi-lang-go=\"`disable`\" pulumi-lang-python=\"`disable`\" pulumi-lang-yaml=\"`disable`\" pulumi-lang-java=\"`disable`\"\u003e`disable`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`logOnly`\" pulumi-lang-dotnet=\"`LogOnly`\" pulumi-lang-go=\"`logOnly`\" pulumi-lang-python=\"`log_only`\" pulumi-lang-yaml=\"`logOnly`\" pulumi-lang-java=\"`logOnly`\"\u003e`logOnly`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`enable`\" pulumi-lang-dotnet=\"`Enable`\" pulumi-lang-go=\"`enable`\" pulumi-lang-python=\"`enable`\" pulumi-lang-yaml=\"`enable`\" pulumi-lang-java=\"`enable`\"\u003e`enable`\u003c/span\u003e).\n"
                    },
                    "paranoiaLevel": {
                        "type": "integer",
                        "description": "The sensitivity level (\u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e,\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,\u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e,\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e) to use when classifying requests as malicious. With a high level, requests are more likely to be classed as malicious, and false positives are expected. With a lower level, requests are more likely to be classed as benign.\n"
                    },
                    "pipelineId": {
                        "type": "string",
                        "description": "The ID of the pipeline.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the WAF stage is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the WAF stage.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/edgeserviceswafstage.EdgeServicesWafStage has been deprecated in favor of scaleway.edgeservices/wafstage.WafStage"
        },
        "scaleway:index/fileFilesystem:FileFilesystem": {
            "description": "\u003e **This product is currently in private beta. To request access, please contact your Technical Account Manager.**\n\nCreates and manages a Scaleway File Storage filesystem in a specific region. A filesystem is a scalable storage resource that can be mounted on Compute instances and is typically used for share persistent storage between multiple instances (RWX).\n\nThis resource allows you to define and manage the size, tags, and region of a filesystem, and track its creation and update timestamps, current status, and number of active attachments.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst file = new scaleway.FileFilesystem(\"file\", {\n    name: \"my-nfs-filesystem\",\n    sizeInGb: 100,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nfile = scaleway.FileFilesystem(\"file\",\n    name=\"my-nfs-filesystem\",\n    size_in_gb=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var file = new Scaleway.FileFilesystem(\"file\", new()\n    {\n        Name = \"my-nfs-filesystem\",\n        SizeInGb = 100,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := scaleway.NewFileFilesystem(ctx, \"file\", \u0026scaleway.FileFilesystemArgs{\n\t\t\tName:     pulumi.String(\"my-nfs-filesystem\"),\n\t\t\tSizeInGb: pulumi.Int(100),\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.scaleway.FileFilesystem;\nimport com.pulumi.scaleway.FileFilesystemArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 file = new FileFilesystem(\"file\", FileFilesystemArgs.builder()\n            .name(\"my-nfs-filesystem\")\n            .sizeInGb(100)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  file:\n    type: scaleway:FileFilesystem\n    properties:\n      name: my-nfs-filesystem\n      sizeInGb: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFile Storage filesystems can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/fileFilesystem:FileFilesystem main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the File Storage filesystem was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the filesystem. If not provided, a random name will be generated.\n"
                },
                "numberOfAttachments": {
                    "type": "integer",
                    "description": "The number of active attachments (mounts) on the filesystem.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region where the filesystem will be created (e.g., fr-par, nl-ams).\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the filesystem in bytes, with a granularity of 100 GB (10¹¹ bytes).\n- Minimum: 100 GB (100000000000 bytes)\n- Maximum: 10 TB (10000000000000 bytes)\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the filesystem. Possible values include creating, available, etc.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags associated with the filesystem.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update to the File Storage filesystem.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "numberOfAttachments",
                "organizationId",
                "projectId",
                "sizeInGb",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the filesystem. If not provided, a random name will be generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region where the filesystem will be created (e.g., fr-par, nl-ams).\n",
                    "willReplaceOnChanges": true
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the filesystem in bytes, with a granularity of 100 GB (10¹¹ bytes).\n- Minimum: 100 GB (100000000000 bytes)\n- Maximum: 10 TB (10000000000000 bytes)\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags associated with the filesystem.\n"
                }
            },
            "requiredInputs": [
                "sizeInGb"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FileFilesystem resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the File Storage filesystem was created.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the filesystem. If not provided, a random name will be generated.\n"
                    },
                    "numberOfAttachments": {
                        "type": "integer",
                        "description": "The number of active attachments (mounts) on the filesystem.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region where the filesystem will be created (e.g., fr-par, nl-ams).\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "The size of the filesystem in bytes, with a granularity of 100 GB (10¹¹ bytes).\n- Minimum: 100 GB (100000000000 bytes)\n- Maximum: 10 TB (10000000000000 bytes)\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the filesystem. Possible values include creating, available, etc.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags associated with the filesystem.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update to the File Storage filesystem.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:index/flexibleIp:FlexibleIp": {
            "description": "Creates and manages Scaleway flexible IPs.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal-flexible-ip).\n\n\u003e **Note:**\nFlexible IPs are exclusively available for Elastic Metal (bare metal) servers. They are not compatible with other Scaleway products.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {reverse: \"my-reverse.com\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", reverse=\"my-reverse.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        Reverse = \"my-reverse.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tReverse: pulumi.String(\"my-reverse.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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .reverse(\"my-reverse.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      reverse: my-reverse.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {zone: \"fr-par-2\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", zone=\"fr-par-2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        Zone = \"fr-par-2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tZone: pulumi.String(\"fr-par-2\"),\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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .zone(\"fr-par-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      zone: fr-par-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {isIpv6: true});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\", is_ipv6=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        IsIpv6 = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tIsIpv6: 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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .isIpv6(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      isIpv6: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With baremetal server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.account.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\",\n});\nconst byId = scaleway.elasticmetal.getOs({\n    zone: \"fr-par-2\",\n    name: \"Ubuntu\",\n    version: \"20.04 LTS (Focal Fossa)\",\n});\nconst myOffer = scaleway.elasticmetal.getOffer({\n    zone: \"fr-par-2\",\n    name: \"EM-A210R-HDD\",\n});\nconst base = new scaleway.elasticmetal.Server(\"base\", {\n    zone: \"fr-par-2\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    os: byId.then(byId =\u003e byId.osId),\n    sshKeyIds: main.id,\n});\nconst mainIp = new scaleway.elasticmetal.Ip(\"main\", {\n    serverId: base.id,\n    zone: \"fr-par-2\",\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.account.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\")\nby_id = scaleway.elasticmetal.get_os(zone=\"fr-par-2\",\n    name=\"Ubuntu\",\n    version=\"20.04 LTS (Focal Fossa)\")\nmy_offer = scaleway.elasticmetal.get_offer(zone=\"fr-par-2\",\n    name=\"EM-A210R-HDD\")\nbase = scaleway.elasticmetal.Server(\"base\",\n    zone=\"fr-par-2\",\n    offer=my_offer.offer_id,\n    os=by_id.os_id,\n    ssh_key_ids=main.id)\nmain_ip = scaleway.elasticmetal.Ip(\"main\",\n    server_id=base.id,\n    zone=\"fr-par-2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Account.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\",\n    });\n\n    var byId = Scaleway.Elasticmetal.GetOs.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"Ubuntu\",\n        Version = \"20.04 LTS (Focal Fossa)\",\n    });\n\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"EM-A210R-HDD\",\n    });\n\n    var @base = new Scaleway.Elasticmetal.Server(\"base\", new()\n    {\n        Zone = \"fr-par-2\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Os = byId.Apply(getOsResult =\u003e getOsResult.OsId),\n        SshKeyIds = main.Id,\n    });\n\n    var mainIp = new Scaleway.Elasticmetal.Ip(\"main\", new()\n    {\n        ServerId = @base.Id,\n        Zone = \"fr-par-2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := account.NewSshKey(ctx, \"main\", \u0026account.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbyId, err := elasticmetal.GetOs(ctx, \u0026elasticmetal.GetOsArgs{\n\t\t\tZone:    pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName:    pulumi.StringRef(\"Ubuntu\"),\n\t\t\tVersion: pulumi.StringRef(\"20.04 LTS (Focal Fossa)\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"EM-A210R-HDD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := elasticmetal.NewServer(ctx, \"base\", \u0026elasticmetal.ServerArgs{\n\t\t\tZone:      pulumi.String(\"fr-par-2\"),\n\t\t\tOffer:     pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tOs:        pulumi.String(pulumi.String(byId.OsId)),\n\t\t\tSshKeyIds: main.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIp(ctx, \"main\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t\tZone:     pulumi.String(\"fr-par-2\"),\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.scaleway.account.SshKey;\nimport com.pulumi.scaleway.account.SshKeyArgs;\nimport com.pulumi.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOsArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\")\n            .build());\n\n        final var byId = ElasticmetalFunctions.getOs(GetOsArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"Ubuntu\")\n            .version(\"20.04 LTS (Focal Fossa)\")\n            .build());\n\n        final var myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"EM-A210R-HDD\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .zone(\"fr-par-2\")\n            .offer(myOffer.offerId())\n            .os(byId.osId())\n            .sshKeyIds(main.id())\n            .build());\n\n        var mainIp = new Ip(\"mainIp\", IpArgs.builder()\n            .serverId(base.id())\n            .zone(\"fr-par-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:account:SshKey\n    properties:\n      name: main\n      publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILHy/M5FVm5ydLGcal3e5LNcfTalbeN7QL/ZGCvDEdqJ foobar@example.com\n  base:\n    type: scaleway:elasticmetal:Server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${byId.osId}\n      sshKeyIds: ${main.id}\n  mainIp:\n    type: scaleway:elasticmetal:Ip\n    name: main\n    properties:\n      serverId: ${base.id}\n      zone: fr-par-2\nvariables:\n  byId:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 20.04 LTS (Focal Fossa)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-A210R-HDD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexible IPs can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/flexibleIp:FlexibleIp main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Flexible IP (Format ISO 8601).\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the flexible IP.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address of the Flexible IP.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the flexible IP has an IPv6 address.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization of the Flexible IP.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this flexible IP.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the associated server.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the flexible IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the flexible IP.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Flexible IP (Format ISO 8601).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n"
                }
            },
            "required": [
                "createdAt",
                "ipAddress",
                "organizationId",
                "projectId",
                "reverse",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "A description of the flexible IP.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the flexible IP has an IPv6 address.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this flexible IP.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the associated server.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the flexible IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FlexibleIp resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Flexible IP (Format ISO 8601).\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description of the flexible IP.\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP address of the Flexible IP.\n"
                    },
                    "isIpv6": {
                        "type": "boolean",
                        "description": "Defines whether the flexible IP has an IPv6 address.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization of the Flexible IP.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Flexible IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse domain associated with this flexible IP.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the associated server.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the flexible IP.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the flexible IP.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Flexible IP (Format ISO 8601).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Flexible IP.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/flexibleip.FlexibleIp has been deprecated in favor of scaleway.elasticmetal/ip.Ip"
        },
        "scaleway:index/flexibleIpMacAddress:FlexibleIpMacAddress": {
            "description": "Creates and manages Scaleway Flexible IP Mac Addresses.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/elastic-metal-flexible-ip/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.elasticmetal.Ip(\"main\", {});\nconst mainIpMacAddress = new scaleway.elasticmetal.IpMacAddress(\"main\", {\n    flexibleIpId: main.id,\n    type: \"kvm\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.elasticmetal.Ip(\"main\")\nmain_ip_mac_address = scaleway.elasticmetal.IpMacAddress(\"main\",\n    flexible_ip_id=main.id,\n    type=\"kvm\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Elasticmetal.Ip(\"main\");\n\n    var mainIpMacAddress = new Scaleway.Elasticmetal.IpMacAddress(\"main\", new()\n    {\n        FlexibleIpId = main.Id,\n        Type = \"kvm\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := elasticmetal.NewIp(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIpMacAddress(ctx, \"main\", \u0026elasticmetal.IpMacAddressArgs{\n\t\t\tFlexibleIpId: main.ID(),\n\t\t\tType:         pulumi.String(\"kvm\"),\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.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddress;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddressArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\");\n\n        var mainIpMacAddress = new IpMacAddress(\"mainIpMacAddress\", IpMacAddressArgs.builder()\n            .flexibleIpId(main.id())\n            .type(\"kvm\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:elasticmetal:Ip\n  mainIpMacAddress:\n    type: scaleway:elasticmetal:IpMacAddress\n    name: main\n    properties:\n      flexibleIpId: ${main.id}\n      type: kvm\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Duplicate on many other flexible IPs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst myOffer = scaleway.elasticmetal.getOffer({\n    name: \"EM-B112X-SSD\",\n});\nconst base = new scaleway.elasticmetal.Server(\"base\", {\n    name: \"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    installConfigAfterward: true,\n});\nconst ip01 = new scaleway.elasticmetal.Ip(\"ip01\", {serverId: base.id});\nconst ip02 = new scaleway.elasticmetal.Ip(\"ip02\", {serverId: base.id});\nconst ip03 = new scaleway.elasticmetal.Ip(\"ip03\", {serverId: base.id});\nconst main = new scaleway.elasticmetal.IpMacAddress(\"main\", {\n    flexibleIpId: ip01.id,\n    type: \"kvm\",\n    flexibleIpIdsToDuplicates: [\n        ip02.id,\n        ip03.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmy_offer = scaleway.elasticmetal.get_offer(name=\"EM-B112X-SSD\")\nbase = scaleway.elasticmetal.Server(\"base\",\n    name=\"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n    offer=my_offer.offer_id,\n    install_config_afterward=True)\nip01 = scaleway.elasticmetal.Ip(\"ip01\", server_id=base.id)\nip02 = scaleway.elasticmetal.Ip(\"ip02\", server_id=base.id)\nip03 = scaleway.elasticmetal.Ip(\"ip03\", server_id=base.id)\nmain = scaleway.elasticmetal.IpMacAddress(\"main\",\n    flexible_ip_id=ip01.id,\n    type=\"kvm\",\n    flexible_ip_ids_to_duplicates=[\n        ip02.id,\n        ip03.id,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Name = \"EM-B112X-SSD\",\n    });\n\n    var @base = new Scaleway.Elasticmetal.Server(\"base\", new()\n    {\n        Name = \"TestAccScalewayBaremetalServer_WithoutInstallConfig\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        InstallConfigAfterward = true,\n    });\n\n    var ip01 = new Scaleway.Elasticmetal.Ip(\"ip01\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var ip02 = new Scaleway.Elasticmetal.Ip(\"ip02\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var ip03 = new Scaleway.Elasticmetal.Ip(\"ip03\", new()\n    {\n        ServerId = @base.Id,\n    });\n\n    var main = new Scaleway.Elasticmetal.IpMacAddress(\"main\", new()\n    {\n        FlexibleIpId = ip01.Id,\n        Type = \"kvm\",\n        FlexibleIpIdsToDuplicates = new[]\n        {\n            ip02.Id,\n            ip03.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tName: pulumi.StringRef(\"EM-B112X-SSD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := elasticmetal.NewServer(ctx, \"base\", \u0026elasticmetal.ServerArgs{\n\t\t\tName:                   pulumi.String(\"TestAccScalewayBaremetalServer_WithoutInstallConfig\"),\n\t\t\tOffer:                  pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tInstallConfigAfterward: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := elasticmetal.NewIp(ctx, \"ip01\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip02, err := elasticmetal.NewIp(ctx, \"ip02\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip03, err := elasticmetal.NewIp(ctx, \"ip03\", \u0026elasticmetal.IpArgs{\n\t\t\tServerId: base.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticmetal.NewIpMacAddress(ctx, \"main\", \u0026elasticmetal.IpMacAddressArgs{\n\t\t\tFlexibleIpId: ip01.ID(),\n\t\t\tType:         pulumi.String(\"kvm\"),\n\t\t\tFlexibleIpIdsToDuplicates: pulumi.StringArray{\n\t\t\t\tip02.ID(),\n\t\t\t\tip03.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.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.scaleway.elasticmetal.Ip;\nimport com.pulumi.scaleway.elasticmetal.IpArgs;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddress;\nimport com.pulumi.scaleway.elasticmetal.IpMacAddressArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .name(\"EM-B112X-SSD\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .name(\"TestAccScalewayBaremetalServer_WithoutInstallConfig\")\n            .offer(myOffer.offerId())\n            .installConfigAfterward(true)\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var ip02 = new Ip(\"ip02\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var ip03 = new Ip(\"ip03\", IpArgs.builder()\n            .serverId(base.id())\n            .build());\n\n        var main = new IpMacAddress(\"main\", IpMacAddressArgs.builder()\n            .flexibleIpId(ip01.id())\n            .type(\"kvm\")\n            .flexibleIpIdsToDuplicates(            \n                ip02.id(),\n                ip03.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  base:\n    type: scaleway:elasticmetal:Server\n    properties:\n      name: TestAccScalewayBaremetalServer_WithoutInstallConfig\n      offer: ${myOffer.offerId}\n      installConfigAfterward: true\n  ip01:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  ip02:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  ip03:\n    type: scaleway:elasticmetal:Ip\n    properties:\n      serverId: ${base.id}\n  main:\n    type: scaleway:elasticmetal:IpMacAddress\n    properties:\n      flexibleIpId: ${ip01.id}\n      type: kvm\n      flexibleIpIdsToDuplicates:\n        - ${ip02.id}\n        - ${ip03.id}\nvariables:\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        name: EM-B112X-SSD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlexible IP Mac Addresses can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/flexibleIpMacAddress:FlexibleIpMacAddress main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The Virtual MAC address.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date at which the Virtual Mac Address was created (RFC 3339 format).\n"
                },
                "flexibleIpId": {
                    "type": "string",
                    "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                },
                "flexibleIpIdsToDuplicates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The Virtual MAC status.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the virtual MAC.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date at which the Virtual Mac Address was last updated (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the Virtual Mac Address.\n"
                }
            },
            "required": [
                "address",
                "createdAt",
                "flexibleIpId",
                "status",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "flexibleIpId": {
                    "type": "string",
                    "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                },
                "flexibleIpIdsToDuplicates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the virtual MAC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the Virtual Mac Address.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "flexibleIpId",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FlexibleIpMacAddress resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The Virtual MAC address.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date at which the Virtual Mac Address was created (RFC 3339 format).\n"
                    },
                    "flexibleIpId": {
                        "type": "string",
                        "description": "The ID of the flexible IP for which to generate a virtual MAC.\n"
                    },
                    "flexibleIpIdsToDuplicates": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The IDs of the flexible IPs on which to duplicate the virtual MAC.\n\u003e **Important:** The flexible IPs need to be attached to the same server for the operation to work.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The Virtual MAC status.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the virtual MAC.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date at which the Virtual Mac Address was last updated (RFC 3339 format).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone of the Virtual Mac Address.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/flexibleipmacaddress.FlexibleIpMacAddress has been deprecated in favor of scaleway.elasticmetal/ipmacaddress.IpMacAddress"
        },
        "scaleway:index/function:Function": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Function`\" pulumi-lang-dotnet=\"`scaleway.functions.Function`\" pulumi-lang-go=\"`functions.Function`\" pulumi-lang-python=\"`functions.Function`\" pulumi-lang-yaml=\"`scaleway.functions.Function`\" pulumi-lang-java=\"`scaleway.functions.Function`\"\u003e`scaleway.functions.Function`\u003c/span\u003e resource allows you to create and manage [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Serverless Functions [product documentation](https://www.scaleway.com/en/docs/serverless/functions/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/) for more information.\n\nFor more information on the limitations of Serverless Functions, refer to the [dedicated documentation](https://www.scaleway.com/en/docs/compute/functions/reference-content/functions-limitations/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"go124\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      runtime: go124\n      handler: Handle\n      privacy: private\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With sources and deploy\n\nYou can easily create a zip file containing your function (ex: `zip function.zip -r go.mod go.sum handler.go`) to deploy it with Terraform seamlessly. Refer to our [dedicated documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/package-function-dependencies-in-zip/) for more information on how to package a function into a zip file.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    description: \"function with zip file\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n    timeout: 10,\n    zipFile: \"function.zip\",\n    zipHash: std.filesha256({\n        input: \"function.zip\",\n    }).result,\n    deploy: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    description=\"function with zip file\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ],\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\",\n    timeout=10,\n    zip_file=\"function.zip\",\n    zip_hash=std.filesha256(input=\"function.zip\")[\"result\"],\n    deploy=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Description = \"function with zip file\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n        Timeout = 10,\n        ZipFile = \"function.zip\",\n        ZipHash = Std.Filesha256.Invoke(new()\n        {\n            Input = \"function.zip\",\n        }).Result,\n        Deploy = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilesha256, err := std.Filesha256(ctx, map[string]interface{}{\n\t\t\t\"input\": \"function.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tDescription: pulumi.String(\"function with zip file\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t\tRuntime: pulumi.String(\"go124\"),\n\t\t\tHandler: pulumi.String(\"Handle\"),\n\t\t\tPrivacy: pulumi.String(\"private\"),\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tZipFile: pulumi.String(\"function.zip\"),\n\t\t\tZipHash: invokeFilesha256.Result,\n\t\t\tDeploy:  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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .description(\"function with zip file\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .timeout(10)\n            .zipFile(\"function.zip\")\n            .zipHash(StdFunctions.filesha256(Map.of(\"input\", \"function.zip\")).result())\n            .deploy(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      description: function with zip file\n      tags:\n        - tag1\n        - tag2\n      runtime: go124\n      handler: Handle\n      privacy: private\n      timeout: 10\n      zipFile: function.zip\n      zipHash:\n        fn::invoke:\n          function: std:filesha256\n          arguments:\n            input: function.zip\n          return: result\n      deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Managing authentication of private functions with IAM\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\n// Project to be referenced in the IAM policy\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM resources\nconst funcAuth = new scaleway.iam.Application(\"func_auth\", {name: \"function-auth\"});\nconst accessPrivateFuncs = new scaleway.iam.Policy(\"access_private_funcs\", {\n    applicationId: funcAuth.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"FunctionsPrivateAccess\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: funcAuth.id});\n// Function resources\nconst _private = new scaleway.functions.Namespace(\"private\", {name: \"private-function-namespace\"});\nconst privateFunction = new scaleway.functions.Function(\"private\", {\n    namespaceId: _private.id,\n    runtime: \"go124\",\n    handler: \"Handle\",\n    privacy: \"private\",\n    zipFile: \"function.zip\",\n    zipHash: std.filesha256({\n        input: \"function.zip\",\n    }).result,\n    deploy: true,\n});\nexport const secretKey = apiKey.secretKey;\nexport const functionEndpoint = privateFunction.domainName;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\n# Project to be referenced in the IAM policy\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM resources\nfunc_auth = scaleway.iam.Application(\"func_auth\", name=\"function-auth\")\naccess_private_funcs = scaleway.iam.Policy(\"access_private_funcs\",\n    application_id=func_auth.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"FunctionsPrivateAccess\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=func_auth.id)\n# Function resources\nprivate = scaleway.functions.Namespace(\"private\", name=\"private-function-namespace\")\nprivate_function = scaleway.functions.Function(\"private\",\n    namespace_id=private.id,\n    runtime=\"go124\",\n    handler=\"Handle\",\n    privacy=\"private\",\n    zip_file=\"function.zip\",\n    zip_hash=std.filesha256(input=\"function.zip\")[\"result\"],\n    deploy=True)\npulumi.export(\"secretKey\", api_key.secret_key)\npulumi.export(\"functionEndpoint\", private_function.domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project to be referenced in the IAM policy\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM resources\n    var funcAuth = new Scaleway.Iam.Application(\"func_auth\", new()\n    {\n        Name = \"function-auth\",\n    });\n\n    var accessPrivateFuncs = new Scaleway.Iam.Policy(\"access_private_funcs\", new()\n    {\n        ApplicationId = funcAuth.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"FunctionsPrivateAccess\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = funcAuth.Id,\n    });\n\n    // Function resources\n    var @private = new Scaleway.Functions.Namespace(\"private\", new()\n    {\n        Name = \"private-function-namespace\",\n    });\n\n    var privateFunction = new Scaleway.Functions.Function(\"private\", new()\n    {\n        NamespaceId = @private.Id,\n        Runtime = \"go124\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n        ZipFile = \"function.zip\",\n        ZipHash = Std.Filesha256.Invoke(new()\n        {\n            Input = \"function.zip\",\n        }).Result,\n        Deploy = true,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"secretKey\"] = apiKey.SecretKey,\n        [\"functionEndpoint\"] = privateFunction.DomainName,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project to be referenced in the IAM policy\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM resources\n\t\tfuncAuth, err := iam.NewApplication(ctx, \"func_auth\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"function-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"access_private_funcs\", \u0026iam.PolicyArgs{\n\t\t\tApplicationId: funcAuth.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"FunctionsPrivateAccess\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: funcAuth.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Function resources\n\t\tprivate, err := functions.NewNamespace(ctx, \"private\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"private-function-namespace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilesha256, err := std.Filesha256(ctx, map[string]interface{}{\n\t\t\t\"input\": \"function.zip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateFunction, err := functions.NewFunction(ctx, \"private\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: private.ID(),\n\t\t\tRuntime:     pulumi.String(\"go124\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tZipFile:     pulumi.String(\"function.zip\"),\n\t\t\tZipHash:     invokeFilesha256.Result,\n\t\t\tDeploy:      pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"secretKey\", apiKey.SecretKey)\n\t\tctx.Export(\"functionEndpoint\", privateFunction.DomainName)\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project to be referenced in the IAM policy\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM resources\n        var funcAuth = new Application(\"funcAuth\", ApplicationArgs.builder()\n            .name(\"function-auth\")\n            .build());\n\n        var accessPrivateFuncs = new Policy(\"accessPrivateFuncs\", PolicyArgs.builder()\n            .applicationId(funcAuth.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"FunctionsPrivateAccess\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(funcAuth.id())\n            .build());\n\n        // Function resources\n        var private_ = new Namespace(\"private\", NamespaceArgs.builder()\n            .name(\"private-function-namespace\")\n            .build());\n\n        var privateFunction = new Function(\"privateFunction\", FunctionArgs.builder()\n            .namespaceId(private_.id())\n            .runtime(\"go124\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .zipFile(\"function.zip\")\n            .zipHash(StdFunctions.filesha256(Map.of(\"input\", \"function.zip\")).result())\n            .deploy(true)\n            .build());\n\n        ctx.export(\"secretKey\", apiKey.secretKey());\n        ctx.export(\"functionEndpoint\", privateFunction.domainName());\n    }\n}\n```\n```yaml\nresources:\n  # IAM resources\n  funcAuth:\n    type: scaleway:iam:Application\n    name: func_auth\n    properties:\n      name: function-auth\n  accessPrivateFuncs:\n    type: scaleway:iam:Policy\n    name: access_private_funcs\n    properties:\n      applicationId: ${funcAuth.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - FunctionsPrivateAccess\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${funcAuth.id}\n  # Function resources\n  private:\n    type: scaleway:functions:Namespace\n    properties:\n      name: private-function-namespace\n  privateFunction:\n    type: scaleway:functions:Function\n    name: private\n    properties:\n      namespaceId: ${private.id}\n      runtime: go124\n      handler: Handle\n      privacy: private\n      zipFile: function.zip\n      zipHash:\n        fn::invoke:\n          function: std:filesha256\n          arguments:\n            input: function.zip\n          return: result\n      deploy: true\nvariables:\n  # Project to be referenced in the IAM policy\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  # Output the secret key and the function's endpoint for the curl command\n  secretKey: ${apiKey.secretKey}\n  functionEndpoint: ${privateFunction.domainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThen you can access your private function using the API key:\n\n```shell\n$ curl -H \"X-Auth-Token: $(terraform output -raw secret_key)\" \\\n  \"https://$(terraform output -raw function_endpoint)/\"\n```\n\nKeep in mind that you should revoke your legacy JWT tokens to ensure maximum security.\n\n## Import\n\nFunctions can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/function:Function main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cpuLimit": {
                    "type": "integer",
                    "description": "The CPU limit in mVCPU for your function.\n"
                },
                "deploy": {
                    "type": "boolean",
                    "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the function.\n"
                },
                "domainName": {
                    "type": "string",
                    "description": "The native domain name of the function.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                },
                "handler": {
                    "type": "string",
                    "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the function name.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the function is associated with.\n"
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the function is connected to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n"
                },
                "runtime": {
                    "type": "string",
                    "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the function.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the function.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                },
                "zipFile": {
                    "type": "string",
                    "description": "Path to the zip file containing your function sources to upload.\n"
                },
                "zipHash": {
                    "type": "string",
                    "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                }
            },
            "required": [
                "cpuLimit",
                "domainName",
                "handler",
                "name",
                "namespaceId",
                "organizationId",
                "privacy",
                "projectId",
                "runtime",
                "sandbox",
                "timeout"
            ],
            "inputProperties": {
                "deploy": {
                    "type": "boolean",
                    "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the function.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                },
                "handler": {
                    "type": "string",
                    "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                },
                "httpOption": {
                    "type": "string",
                    "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                },
                "maxScale": {
                    "type": "integer",
                    "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                },
                "minScale": {
                    "type": "integer",
                    "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the function name.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n",
                    "willReplaceOnChanges": true
                },
                "privacy": {
                    "type": "string",
                    "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network the function is connected to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n",
                    "willReplaceOnChanges": true
                },
                "runtime": {
                    "type": "string",
                    "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                },
                "sandbox": {
                    "type": "string",
                    "description": "Execution environment of the function.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the function.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                },
                "zipFile": {
                    "type": "string",
                    "description": "Path to the zip file containing your function sources to upload.\n"
                },
                "zipHash": {
                    "type": "string",
                    "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                }
            },
            "requiredInputs": [
                "handler",
                "namespaceId",
                "privacy",
                "runtime"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Function resources.\n",
                "properties": {
                    "cpuLimit": {
                        "type": "integer",
                        "description": "The CPU limit in mVCPU for your function.\n"
                    },
                    "deploy": {
                        "type": "boolean",
                        "description": "Define whether the function should be deployed. Terraform will wait for the function to be deployed. Your function will be redeployed if you update the source zip file.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the function.\n"
                    },
                    "domainName": {
                        "type": "string",
                        "description": "The native domain name of the function.\n"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#environment-variables) of the function.\n"
                    },
                    "handler": {
                        "type": "string",
                        "description": "Handler of the function, depends on the runtime. Refer to the [dedicated documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-create-a-new-function) for the list of supported runtimes.\n"
                    },
                    "httpOption": {
                        "type": "string",
                        "description": "Allows both HTTP and HTTPS (\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) or redirect HTTP to HTTPS (\u003cspan pulumi-lang-nodejs=\"`redirected`\" pulumi-lang-dotnet=\"`Redirected`\" pulumi-lang-go=\"`redirected`\" pulumi-lang-python=\"`redirected`\" pulumi-lang-yaml=\"`redirected`\" pulumi-lang-java=\"`redirected`\"\u003e`redirected`\u003c/span\u003e). Defaults to \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.\n"
                    },
                    "maxScale": {
                        "type": "integer",
                        "description": "The maximum number of instances this function can scale to. Default to 20. Your function will scale automatically based on the incoming workload, but will never exceed the configured \u003cspan pulumi-lang-nodejs=\"`maxScale`\" pulumi-lang-dotnet=\"`MaxScale`\" pulumi-lang-go=\"`maxScale`\" pulumi-lang-python=\"`max_scale`\" pulumi-lang-yaml=\"`maxScale`\" pulumi-lang-java=\"`maxScale`\"\u003e`maxScale`\u003c/span\u003e value.\n"
                    },
                    "memoryLimit": {
                        "type": "integer",
                        "description": "The memory resources in MB to allocate to each function. Defaults to 256 MB.\n"
                    },
                    "minScale": {
                        "type": "integer",
                        "description": "The minimum number of function instances running continuously. Defaults to 0. Functions are billed when executed, and using a \u003cspan pulumi-lang-nodejs=\"`minScale`\" pulumi-lang-dotnet=\"`MinScale`\" pulumi-lang-go=\"`minScale`\" pulumi-lang-python=\"`min_scale`\" pulumi-lang-yaml=\"`minScale`\" pulumi-lang-java=\"`minScale`\"\u003e`minScale`\u003c/span\u003e greater than 0 will cause your function to run constantly.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the function name.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The Functions namespace ID of the function.\n\n\u003e **Important** Updating 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 will recreate the function.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the function is associated with.\n"
                    },
                    "privacy": {
                        "type": "string",
                        "description": "The privacy type defines the way to authenticate to your function. Please check our dedicated [section](https://www.scaleway.com/en/developers/api/serverless-functions/#protocol-9dd4c8).\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the Private Network the function is connected to.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the functions namespace is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "runtime": {
                        "type": "string",
                        "description": "Runtime of the function. Runtimes can be fetched using [specific route](https://www.scaleway.com/en/developers/api/serverless-functions/#path-functions-get-a-function)\n"
                    },
                    "sandbox": {
                        "type": "string",
                        "description": "Execution environment of the function.\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The [secret environment variables](https://www.scaleway.com/en/docs/compute/functions/concepts/#secrets) of the function.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the function.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The maximum amount of time your function can spend processing a request before being stopped. Defaults to 300s.\n"
                    },
                    "zipFile": {
                        "type": "string",
                        "description": "Path to the zip file containing your function sources to upload.\n"
                    },
                    "zipHash": {
                        "type": "string",
                        "description": "The hash of your source zip file, changing it will redeploy the function. Can be any string, changing it will simply trigger a state change. You can use any Terraform hash function to trigger a change on your zip change (see examples).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/function.Function has been deprecated in favor of scaleway.functions/function.Function"
        },
        "scaleway:index/functionCron:FunctionCron": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Cron`\" pulumi-lang-dotnet=\"`scaleway.functions.Cron`\" pulumi-lang-go=\"`functions.Cron`\" pulumi-lang-python=\"`functions.Cron`\" pulumi-lang-yaml=\"`scaleway.functions.Cron`\" pulumi-lang-java=\"`scaleway.functions.Cron`\"\u003e`scaleway.functions.Cron`\u003c/span\u003e resource allows you to create and manage CRON triggers for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions CRON triggers [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-trigger-to-a-function/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\nThe following command allows you to add a CRON trigger to a Serverless Function.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {name: \"test-cron\"});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    name: \"test-cron\",\n    namespaceId: main.id,\n    runtime: \"node14\",\n    privacy: \"private\",\n    handler: \"handler.handle\",\n});\nconst mainCron = new scaleway.functions.Cron(\"main\", {\n    name: \"test-cron\",\n    functionId: mainFunction.id,\n    schedule: \"0 0 * * *\",\n    args: JSON.stringify({\n        test: \"scw\",\n    }),\n});\nconst func = new scaleway.functions.Cron(\"func\", {\n    functionId: mainFunction.id,\n    schedule: \"0 1 * * *\",\n    args: JSON.stringify({\n        my_var: \"terraform\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\", name=\"test-cron\")\nmain_function = scaleway.functions.Function(\"main\",\n    name=\"test-cron\",\n    namespace_id=main.id,\n    runtime=\"node14\",\n    privacy=\"private\",\n    handler=\"handler.handle\")\nmain_cron = scaleway.functions.Cron(\"main\",\n    name=\"test-cron\",\n    function_id=main_function.id,\n    schedule=\"0 0 * * *\",\n    args=json.dumps({\n        \"test\": \"scw\",\n    }))\nfunc = scaleway.functions.Cron(\"func\",\n    function_id=main_function.id,\n    schedule=\"0 1 * * *\",\n    args=json.dumps({\n        \"my_var\": \"terraform\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"test-cron\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        Name = \"test-cron\",\n        NamespaceId = main.Id,\n        Runtime = \"node14\",\n        Privacy = \"private\",\n        Handler = \"handler.handle\",\n    });\n\n    var mainCron = new Scaleway.Functions.Cron(\"main\", new()\n    {\n        Name = \"test-cron\",\n        FunctionId = mainFunction.Id,\n        Schedule = \"0 0 * * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"test\"] = \"scw\",\n        }),\n    });\n\n    var func = new Scaleway.Functions.Cron(\"func\", new()\n    {\n        FunctionId = mainFunction.Id,\n        Schedule = \"0 1 * * *\",\n        Args = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"my_var\"] = \"terraform\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-cron\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tName:        pulumi.String(\"test-cron\"),\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"node14\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tHandler:     pulumi.String(\"handler.handle\"),\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\"test\": \"scw\",\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 = functions.NewCron(ctx, \"main\", \u0026functions.CronArgs{\n\t\t\tName:       pulumi.String(\"test-cron\"),\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tSchedule:   pulumi.String(\"0 0 * * *\"),\n\t\t\tArgs:       pulumi.String(pulumi.String(json0)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"my_var\": \"terraform\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = functions.NewCron(ctx, \"func\", \u0026functions.CronArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tSchedule:   pulumi.String(\"0 1 * * *\"),\n\t\t\tArgs:       pulumi.String(pulumi.String(json1)),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Cron;\nimport com.pulumi.scaleway.functions.CronArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-cron\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .name(\"test-cron\")\n            .namespaceId(main.id())\n            .runtime(\"node14\")\n            .privacy(\"private\")\n            .handler(\"handler.handle\")\n            .build());\n\n        var mainCron = new Cron(\"mainCron\", CronArgs.builder()\n            .name(\"test-cron\")\n            .functionId(mainFunction.id())\n            .schedule(\"0 0 * * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"test\", \"scw\")\n                )))\n            .build());\n\n        var func = new Cron(\"func\", CronArgs.builder()\n            .functionId(mainFunction.id())\n            .schedule(\"0 1 * * *\")\n            .args(serializeJson(\n                jsonObject(\n                    jsonProperty(\"my_var\", \"terraform\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: test-cron\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      name: test-cron\n      namespaceId: ${main.id}\n      runtime: node14\n      privacy: private\n      handler: handler.handle\n  mainCron:\n    type: scaleway:functions:Cron\n    name: main\n    properties:\n      name: test-cron\n      functionId: ${mainFunction.id}\n      schedule: 0 0 * * *\n      args:\n        fn::toJSON:\n          test: scw\n  func:\n    type: scaleway:functions:Cron\n    properties:\n      functionId: ${mainFunction.id}\n      schedule: 0 1 * * *\n      args:\n        fn::toJSON:\n          my_var: terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction Cron can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/functionCron:FunctionCron main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the function was created.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                },
                "status": {
                    "type": "string",
                    "description": "The CRON status.\n"
                }
            },
            "required": [
                "args",
                "functionId",
                "name",
                "schedule",
                "status"
            ],
            "inputProperties": {
                "args": {
                    "type": "string",
                    "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to link to your CRON trigger.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the function was created.\n",
                    "willReplaceOnChanges": true
                },
                "schedule": {
                    "type": "string",
                    "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                }
            },
            "requiredInputs": [
                "args",
                "functionId",
                "schedule"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FunctionCron resources.\n",
                "properties": {
                    "args": {
                        "type": "string",
                        "description": "The key-value mapping to define arguments that will be passed to your function’s event object\n"
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function to link to your CRON trigger.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the function CRON trigger. If not provided, a random name is generated.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the function was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "schedule": {
                        "type": "string",
                        "description": "CRON format string (refer to the [CRON schedule reference](https://www.scaleway.com/en/docs/serverless/functions/reference-content/cron-schedules/) for more information).\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The CRON status.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/functioncron.FunctionCron has been deprecated in favor of scaleway.functions/cron.Cron"
        },
        "scaleway:index/functionDomain:FunctionDomain": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Domain`\" pulumi-lang-dotnet=\"`scaleway.functions.Domain`\" pulumi-lang-go=\"`functions.Domain`\" pulumi-lang-python=\"`functions.Domain`\" pulumi-lang-yaml=\"`scaleway.functions.Domain`\" pulumi-lang-java=\"`scaleway.functions.Domain`\"\u003e`scaleway.functions.Domain`\u003c/span\u003e resource allows you to create and manage domain name bindings for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions domain [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-a-custom-domain-name-to-a-function/) and the [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-domains-list-all-domain-name-bindings) for more information.\n\n## Example Usage\n\nThis command allows to bind a custom domain name to a function.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainNamespace = new scaleway.functions.Namespace(\"main\", {});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: mainNamespace.id,\n    runtime: \"go118\",\n    privacy: \"private\",\n    handler: \"Handle\",\n    zipFile: \"testfixture/gofunction.zip\",\n    deploy: true,\n});\nconst main = new scaleway.functions.Domain(\"main\", {\n    functionId: mainFunction.id,\n    hostname: \"example.com\",\n}, {\n    dependsOn: [mainFunction],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_namespace = scaleway.functions.Namespace(\"main\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main_namespace.id,\n    runtime=\"go118\",\n    privacy=\"private\",\n    handler=\"Handle\",\n    zip_file=\"testfixture/gofunction.zip\",\n    deploy=True)\nmain = scaleway.functions.Domain(\"main\",\n    function_id=main_function.id,\n    hostname=\"example.com\",\n    opts = pulumi.ResourceOptions(depends_on=[main_function]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainNamespace = new Scaleway.Functions.Namespace(\"main\");\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = mainNamespace.Id,\n        Runtime = \"go118\",\n        Privacy = \"private\",\n        Handler = \"Handle\",\n        ZipFile = \"testfixture/gofunction.zip\",\n        Deploy = true,\n    });\n\n    var main = new Scaleway.Functions.Domain(\"main\", new()\n    {\n        FunctionId = mainFunction.Id,\n        Hostname = \"example.com\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainFunction,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainNamespace, err := functions.NewNamespace(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: mainNamespace.ID(),\n\t\t\tRuntime:     pulumi.String(\"go118\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tZipFile:     pulumi.String(\"testfixture/gofunction.zip\"),\n\t\t\tDeploy:      pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = functions.NewDomain(ctx, \"main\", \u0026functions.DomainArgs{\n\t\t\tFunctionId: mainFunction.ID(),\n\t\t\tHostname:   pulumi.String(\"example.com\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainFunction,\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Domain;\nimport com.pulumi.scaleway.functions.DomainArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainNamespace = new Namespace(\"mainNamespace\");\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(mainNamespace.id())\n            .runtime(\"go118\")\n            .privacy(\"private\")\n            .handler(\"Handle\")\n            .zipFile(\"testfixture/gofunction.zip\")\n            .deploy(true)\n            .build());\n\n        var main = new Domain(\"main\", DomainArgs.builder()\n            .functionId(mainFunction.id())\n            .hostname(\"example.com\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(mainFunction)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Domain\n    properties:\n      functionId: ${mainFunction.id}\n      hostname: example.com\n    options:\n      dependsOn:\n        - ${mainFunction}\n  mainNamespace:\n    type: scaleway:functions:Namespace\n    name: main\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${mainNamespace.id}\n      runtime: go118\n      privacy: private\n      handler: Handle\n      zipFile: testfixture/gofunction.zip\n      deploy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction domain binding can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/functionDomain:FunctionDomain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the domain was created.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL used to query the function.\n"
                }
            },
            "required": [
                "functionId",
                "hostname",
                "url"
            ],
            "inputProperties": {
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the domain was created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "functionId",
                "hostname"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FunctionDomain resources.\n",
                "properties": {
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function.\n",
                        "willReplaceOnChanges": true
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname with a CNAME record.\n\nWe recommend you use a CNAME domain record that point to your native function \u003cspan pulumi-lang-nodejs=\"`domainName`\" pulumi-lang-dotnet=\"`DomainName`\" pulumi-lang-go=\"`domainName`\" pulumi-lang-python=\"`domain_name`\" pulumi-lang-yaml=\"`domainName`\" pulumi-lang-java=\"`domainName`\"\u003e`domainName`\u003c/span\u003e for it.\n\n\u003e **Important** Updating the \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hostname`\" pulumi-lang-dotnet=\"`Hostname`\" pulumi-lang-go=\"`hostname`\" pulumi-lang-python=\"`hostname`\" pulumi-lang-yaml=\"`hostname`\" pulumi-lang-java=\"`hostname`\"\u003e`hostname`\u003c/span\u003e arguments will recreate the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the domain was created.\n",
                        "willReplaceOnChanges": true
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL used to query the function.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/functiondomain.FunctionDomain has been deprecated in favor of scaleway.functions/domain.Domain"
        },
        "scaleway:index/functionNamespace:FunctionNamespace": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Namespace`\" pulumi-lang-dotnet=\"`scaleway.functions.Namespace`\" pulumi-lang-go=\"`functions.Namespace`\" pulumi-lang-python=\"`functions.Namespace`\" pulumi-lang-yaml=\"`scaleway.functions.Namespace`\" pulumi-lang-java=\"`scaleway.functions.Namespace`\"\u003e`scaleway.functions.Namespace`\u003c/span\u003e resource allows you to\nfor Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions namespace [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/create-manage-delete-functions-namespace/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-namespaces-list-all-your-namespaces) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {\n    name: \"main-function-namespace\",\n    description: \"Main function namespace\",\n    tags: [\n        \"tag1\",\n        \"tag2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\",\n    name=\"main-function-namespace\",\n    description=\"Main function namespace\",\n    tags=[\n        \"tag1\",\n        \"tag2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"main-function-namespace\",\n        Description = \"Main function namespace\",\n        Tags = new[]\n        {\n            \"tag1\",\n            \"tag2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-function-namespace\"),\n\t\t\tDescription: pulumi.String(\"Main function namespace\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\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.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-function-namespace\")\n            .description(\"Main function namespace\")\n            .tags(            \n                \"tag1\",\n                \"tag2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: main-function-namespace\n      description: Main function namespace\n      tags:\n        - tag1\n        - tag2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunctions namespaces can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/functionNamespace:FunctionNamespace main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID with which the namespace is associated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "registryEndpoint": {
                    "type": "string",
                    "description": "The registry endpoint of the namespace.\n"
                },
                "registryNamespaceId": {
                    "type": "string",
                    "description": "The registry namespace ID of the namespace.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "registryEndpoint",
                "registryNamespaceId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the namespace.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "secretEnvironmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The secret environment variables of the namespace.\n",
                    "secret": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags associated with the namespace.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FunctionNamespace resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the namespace.\n"
                    },
                    "environmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The environment variables of the namespace.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the Functions namespace.\n\n\u003e **Important** Updates to 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 will recreate the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID with which the namespace is associated.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The unique identifier of the project that contains the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryEndpoint": {
                        "type": "string",
                        "description": "The registry endpoint of the namespace.\n"
                    },
                    "registryNamespaceId": {
                        "type": "string",
                        "description": "The registry namespace ID of the namespace.\n"
                    },
                    "secretEnvironmentVariables": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The secret environment variables of the namespace.\n",
                        "secret": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags associated with the namespace.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/functionnamespace.FunctionNamespace has been deprecated in favor of scaleway.functions/namespace.Namespace"
        },
        "scaleway:index/functionToken:FunctionToken": {
            "description": "\u003e **Important:** The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Token`\" pulumi-lang-dotnet=\"`scaleway.functions.Token`\" pulumi-lang-go=\"`functions.Token`\" pulumi-lang-python=\"`functions.Token`\" pulumi-lang-yaml=\"`scaleway.functions.Token`\" pulumi-lang-java=\"`scaleway.functions.Token`\"\u003e`scaleway.functions.Token`\u003c/span\u003e has been deprecated and will no longer be supported in v1 of the API.\nPlease use IAM authentication instead. You will find an implementation example in the IAM authentication section of the Function documentation.\n\nThe \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Token`\" pulumi-lang-dotnet=\"`scaleway.functions.Token`\" pulumi-lang-go=\"`functions.Token`\" pulumi-lang-python=\"`functions.Token`\" pulumi-lang-yaml=\"`scaleway.functions.Token`\" pulumi-lang-java=\"`scaleway.functions.Token`\"\u003e`scaleway.functions.Token`\u003c/span\u003e resource allows you to create and manage authentication tokens for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions tokens [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/create-auth-token-from-console/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-tokens-list-all-tokens) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Namespace(\"main\", {name: \"test-function-token-ns\"});\nconst mainFunction = new scaleway.functions.Function(\"main\", {\n    namespaceId: main.id,\n    runtime: \"go118\",\n    handler: \"Handle\",\n    privacy: \"private\",\n});\n// Namespace Token\nconst namespace = new scaleway.functions.Token(\"namespace\", {\n    namespaceId: main.id,\n    expiresAt: \"2022-10-18T11:35:15+02:00\",\n});\n// Function Token\nconst _function = new scaleway.functions.Token(\"function\", {functionId: mainFunction.id});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Namespace(\"main\", name=\"test-function-token-ns\")\nmain_function = scaleway.functions.Function(\"main\",\n    namespace_id=main.id,\n    runtime=\"go118\",\n    handler=\"Handle\",\n    privacy=\"private\")\n# Namespace Token\nnamespace = scaleway.functions.Token(\"namespace\",\n    namespace_id=main.id,\n    expires_at=\"2022-10-18T11:35:15+02:00\")\n# Function Token\nfunction = scaleway.functions.Token(\"function\", function_id=main_function.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Namespace(\"main\", new()\n    {\n        Name = \"test-function-token-ns\",\n    });\n\n    var mainFunction = new Scaleway.Functions.Function(\"main\", new()\n    {\n        NamespaceId = main.Id,\n        Runtime = \"go118\",\n        Handler = \"Handle\",\n        Privacy = \"private\",\n    });\n\n    // Namespace Token\n    var @namespace = new Scaleway.Functions.Token(\"namespace\", new()\n    {\n        NamespaceId = main.Id,\n        ExpiresAt = \"2022-10-18T11:35:15+02:00\",\n    });\n\n    // Function Token\n    var function = new Scaleway.Functions.Token(\"function\", new()\n    {\n        FunctionId = mainFunction.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := functions.NewNamespace(ctx, \"main\", \u0026functions.NamespaceArgs{\n\t\t\tName: pulumi.String(\"test-function-token-ns\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainFunction, err := functions.NewFunction(ctx, \"main\", \u0026functions.FunctionArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tRuntime:     pulumi.String(\"go118\"),\n\t\t\tHandler:     pulumi.String(\"Handle\"),\n\t\t\tPrivacy:     pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Namespace Token\n\t\t_, err = functions.NewToken(ctx, \"namespace\", \u0026functions.TokenArgs{\n\t\t\tNamespaceId: main.ID(),\n\t\t\tExpiresAt:   pulumi.String(\"2022-10-18T11:35:15+02:00\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Function Token\n\t\t_, err = functions.NewToken(ctx, \"function\", \u0026functions.TokenArgs{\n\t\t\tFunctionId: mainFunction.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.pulumi.scaleway.functions.Namespace;\nimport com.pulumi.scaleway.functions.NamespaceArgs;\nimport com.pulumi.scaleway.functions.Function;\nimport com.pulumi.scaleway.functions.FunctionArgs;\nimport com.pulumi.scaleway.functions.Token;\nimport com.pulumi.scaleway.functions.TokenArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"test-function-token-ns\")\n            .build());\n\n        var mainFunction = new Function(\"mainFunction\", FunctionArgs.builder()\n            .namespaceId(main.id())\n            .runtime(\"go118\")\n            .handler(\"Handle\")\n            .privacy(\"private\")\n            .build());\n\n        // Namespace Token\n        var namespace = new Token(\"namespace\", TokenArgs.builder()\n            .namespaceId(main.id())\n            .expiresAt(\"2022-10-18T11:35:15+02:00\")\n            .build());\n\n        // Function Token\n        var function = new Token(\"function\", TokenArgs.builder()\n            .functionId(mainFunction.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Namespace\n    properties:\n      name: test-function-token-ns\n  mainFunction:\n    type: scaleway:functions:Function\n    name: main\n    properties:\n      namespaceId: ${main.id}\n      runtime: go118\n      handler: Handle\n      privacy: private\n  # Namespace Token\n  namespace:\n    type: scaleway:functions:Token\n    properties:\n      namespaceId: ${main.id}\n      expiresAt: 2022-10-18T11:35:15+02:00\n  # Function Token\n  function:\n    type: scaleway:functions:Token\n    properties:\n      functionId: ${mainFunction.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTokens can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/functionToken:FunctionToken main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n"
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Functions namespace.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The token.\n",
                    "secret": true
                }
            },
            "required": [
                "value"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the token.\n",
                    "willReplaceOnChanges": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the token.\n",
                    "willReplaceOnChanges": true
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n",
                    "willReplaceOnChanges": true
                },
                "namespaceId": {
                    "type": "string",
                    "description": "The unique identifier of the Functions namespace.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FunctionToken resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The expiration date of the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function.\n\n\u003e Only one of \u003cspan pulumi-lang-nodejs=\"`namespaceId`\" pulumi-lang-dotnet=\"`NamespaceId`\" pulumi-lang-go=\"`namespaceId`\" pulumi-lang-python=\"`namespace_id`\" pulumi-lang-yaml=\"`namespaceId`\" pulumi-lang-java=\"`namespaceId`\"\u003e`namespaceId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`functionId`\" pulumi-lang-dotnet=\"`FunctionId`\" pulumi-lang-go=\"`functionId`\" pulumi-lang-python=\"`function_id`\" pulumi-lang-yaml=\"`functionId`\" pulumi-lang-java=\"`functionId`\"\u003e`functionId`\u003c/span\u003e must be set.\n",
                        "willReplaceOnChanges": true
                    },
                    "namespaceId": {
                        "type": "string",
                        "description": "The unique identifier of the Functions namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n\n\u003e **Important** Updating any of the arguments above will recreate the token.\n",
                        "willReplaceOnChanges": true
                    },
                    "value": {
                        "type": "string",
                        "description": "The token.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/functiontoken.FunctionToken has been deprecated in favor of scaleway.functions/token.Token"
        },
        "scaleway:index/functionTrigger:FunctionTrigger": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.functions.Trigger`\" pulumi-lang-dotnet=\"`scaleway.functions.Trigger`\" pulumi-lang-go=\"`functions.Trigger`\" pulumi-lang-python=\"`functions.Trigger`\" pulumi-lang-yaml=\"`scaleway.functions.Trigger`\" pulumi-lang-java=\"`scaleway.functions.Trigger`\"\u003e`scaleway.functions.Trigger`\u003c/span\u003e resource allows you to create and manage triggers for Scaleway [Serverless Functions](https://www.scaleway.com/en/docs/serverless/functions/).\n\nRefer to the Functions triggers [documentation](https://www.scaleway.com/en/docs/serverless/functions/how-to/add-trigger-to-a-function/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-functions/#path-triggers-list-all-triggers) for more information.\n\n## Example Usage\n\n### SQS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Trigger(\"main\", {\n    functionId: mainScalewayFunction.id,\n    name: \"my-trigger\",\n    sqs: {\n        projectId: mainScalewayMnqSqs.projectId,\n        queue: \"MyQueue\",\n        region: mainScalewayMnqSqs.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Trigger(\"main\",\n    function_id=main_scaleway_function[\"id\"],\n    name=\"my-trigger\",\n    sqs={\n        \"project_id\": main_scaleway_mnq_sqs[\"projectId\"],\n        \"queue\": \"MyQueue\",\n        \"region\": main_scaleway_mnq_sqs[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Trigger(\"main\", new()\n    {\n        FunctionId = mainScalewayFunction.Id,\n        Name = \"my-trigger\",\n        Sqs = new Scaleway.Functions.Inputs.TriggerSqsArgs\n        {\n            ProjectId = mainScalewayMnqSqs.ProjectId,\n            Queue = \"MyQueue\",\n            Region = mainScalewayMnqSqs.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewTrigger(ctx, \"main\", \u0026functions.TriggerArgs{\n\t\t\tFunctionId: pulumi.Any(mainScalewayFunction.Id),\n\t\t\tName:       pulumi.String(\"my-trigger\"),\n\t\t\tSqs: \u0026functions.TriggerSqsArgs{\n\t\t\t\tProjectId: pulumi.Any(mainScalewayMnqSqs.ProjectId),\n\t\t\t\tQueue:     pulumi.String(\"MyQueue\"),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqSqs.Region),\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.scaleway.functions.Trigger;\nimport com.pulumi.scaleway.functions.TriggerArgs;\nimport com.pulumi.scaleway.functions.inputs.TriggerSqsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .functionId(mainScalewayFunction.id())\n            .name(\"my-trigger\")\n            .sqs(TriggerSqsArgs.builder()\n                .projectId(mainScalewayMnqSqs.projectId())\n                .queue(\"MyQueue\")\n                .region(mainScalewayMnqSqs.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Trigger\n    properties:\n      functionId: ${mainScalewayFunction.id}\n      name: my-trigger\n      sqs:\n        projectId: ${mainScalewayMnqSqs.projectId}\n        queue: MyQueue\n        region: ${mainScalewayMnqSqs.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### NATS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.functions.Trigger(\"main\", {\n    functionId: mainScalewayFunction.id,\n    name: \"my-trigger\",\n    nats: {\n        accountId: mainScalewayMnqNatsAccount.id,\n        subject: \"MySubject\",\n        region: mainScalewayMnqNatsAccount.region,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.functions.Trigger(\"main\",\n    function_id=main_scaleway_function[\"id\"],\n    name=\"my-trigger\",\n    nats={\n        \"account_id\": main_scaleway_mnq_nats_account[\"id\"],\n        \"subject\": \"MySubject\",\n        \"region\": main_scaleway_mnq_nats_account[\"region\"],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Functions.Trigger(\"main\", new()\n    {\n        FunctionId = mainScalewayFunction.Id,\n        Name = \"my-trigger\",\n        Nats = new Scaleway.Functions.Inputs.TriggerNatsArgs\n        {\n            AccountId = mainScalewayMnqNatsAccount.Id,\n            Subject = \"MySubject\",\n            Region = mainScalewayMnqNatsAccount.Region,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/functions\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := functions.NewTrigger(ctx, \"main\", \u0026functions.TriggerArgs{\n\t\t\tFunctionId: pulumi.Any(mainScalewayFunction.Id),\n\t\t\tName:       pulumi.String(\"my-trigger\"),\n\t\t\tNats: \u0026functions.TriggerNatsArgs{\n\t\t\t\tAccountId: pulumi.Any(mainScalewayMnqNatsAccount.Id),\n\t\t\t\tSubject:   pulumi.String(\"MySubject\"),\n\t\t\t\tRegion:    pulumi.Any(mainScalewayMnqNatsAccount.Region),\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.scaleway.functions.Trigger;\nimport com.pulumi.scaleway.functions.TriggerArgs;\nimport com.pulumi.scaleway.functions.inputs.TriggerNatsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Trigger(\"main\", TriggerArgs.builder()\n            .functionId(mainScalewayFunction.id())\n            .name(\"my-trigger\")\n            .nats(TriggerNatsArgs.builder()\n                .accountId(mainScalewayMnqNatsAccount.id())\n                .subject(\"MySubject\")\n                .region(mainScalewayMnqNatsAccount.region())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:functions:Trigger\n    properties:\n      functionId: ${mainScalewayFunction.id}\n      name: my-trigger\n      nats:\n        accountId: ${mainScalewayMnqNatsAccount.id}\n        subject: MySubject\n        region: ${mainScalewayMnqNatsAccount.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunction Triggers can be imported using `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/functionTrigger:FunctionTrigger main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to create a trigger for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:index/FunctionTriggerNats:FunctionTriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n"
                },
                "sqs": {
                    "$ref": "#/types/scaleway:index/FunctionTriggerSqs:FunctionTriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n"
                }
            },
            "required": [
                "functionId",
                "name"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the trigger.\n"
                },
                "functionId": {
                    "type": "string",
                    "description": "The unique identifier of the function to create a trigger for.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                },
                "nats": {
                    "$ref": "#/types/scaleway:index/FunctionTriggerNats:FunctionTriggerNats",
                    "description": "The configuration for the Scaleway NATS account used by the trigger\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace is created.\n",
                    "willReplaceOnChanges": true
                },
                "sqs": {
                    "$ref": "#/types/scaleway:index/FunctionTriggerSqs:FunctionTriggerSqs",
                    "description": "The configuration of the Scaleway SQS queue used by the trigger\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "functionId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FunctionTrigger resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the trigger.\n"
                    },
                    "functionId": {
                        "type": "string",
                        "description": "The unique identifier of the function to create a trigger for.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the trigger. If not provided, a random name is generated.\n"
                    },
                    "nats": {
                        "$ref": "#/types/scaleway:index/FunctionTriggerNats:FunctionTriggerNats",
                        "description": "The configuration for the Scaleway NATS account used by the trigger\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "sqs": {
                        "$ref": "#/types/scaleway:index/FunctionTriggerSqs:FunctionTriggerSqs",
                        "description": "The configuration of the Scaleway SQS queue used by the trigger\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/functiontrigger.FunctionTrigger has been deprecated in favor of scaleway.functions/trigger.Trigger"
        },
        "scaleway:index/iamApiKey:IamApiKey": {
            "description": "Creates and manages Scaleway API Keys. For more information, refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#api-keys-3665ae).\n\n## Example Usage\n\n### With application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ciCd = new scaleway.iam.Application(\"ci_cd\", {name: \"My application\"});\nconst main = new scaleway.iam.ApiKey(\"main\", {\n    applicationId: mainScalewayIamApplication.id,\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nci_cd = scaleway.iam.Application(\"ci_cd\", name=\"My application\")\nmain = scaleway.iam.ApiKey(\"main\",\n    application_id=main_scaleway_iam_application[\"id\"],\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ciCd = new Scaleway.Iam.Application(\"ci_cd\", new()\n    {\n        Name = \"My application\",\n    });\n\n    var main = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        ApplicationId = mainScalewayIamApplication.Id,\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewApplication(ctx, \"ci_cd\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"My application\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: pulumi.Any(mainScalewayIamApplication.Id),\n\t\t\tDescription:   pulumi.String(\"a 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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ciCd = new Application(\"ciCd\", ApplicationArgs.builder()\n            .name(\"My application\")\n            .build());\n\n        var main = new ApiKey(\"main\", ApiKeyArgs.builder()\n            .applicationId(mainScalewayIamApplication.id())\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ciCd:\n    type: scaleway:iam:Application\n    name: ci_cd\n    properties:\n      name: My application\n  main:\n    type: scaleway:iam:ApiKey\n    properties:\n      applicationId: ${mainScalewayIamApplication.id}\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With user\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.User(\"main\", {email: \"test@test.com\"});\nconst mainApiKey = new scaleway.iam.ApiKey(\"main\", {\n    userId: main.id,\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.User(\"main\", email=\"test@test.com\")\nmain_api_key = scaleway.iam.ApiKey(\"main\",\n    user_id=main.id,\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.User(\"main\", new()\n    {\n        Email = \"test@test.com\",\n    });\n\n    var mainApiKey = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        UserId = main.Id,\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := iam.NewUser(ctx, \"main\", \u0026iam.UserArgs{\n\t\t\tEmail: pulumi.String(\"test@test.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tUserId:      main.ID(),\n\t\t\tDescription: pulumi.String(\"a 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.pulumi.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new User(\"main\", UserArgs.builder()\n            .email(\"test@test.com\")\n            .build());\n\n        var mainApiKey = new ApiKey(\"mainApiKey\", ApiKeyArgs.builder()\n            .userId(main.id())\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:User\n    properties:\n      email: test@test.com\n  mainApiKey:\n    type: scaleway:iam:ApiKey\n    name: main\n    properties:\n      userId: ${main.id}\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as time from \"@pulumi/time\";\n\nconst rotateAfterAYear = new time.index.Rotating(\"rotate_after_a_year\", {rotationYears: 1});\nconst main = new scaleway.iam.ApiKey(\"main\", {\n    applicationId: mainScalewayIamApplication.id,\n    expiresAt: rotateAfterAYear.rotationRfc3339,\n});\n```\n```python\nimport pulumi\nimport pulumi_time as time\nimport pulumiverse_scaleway as scaleway\n\nrotate_after_a_year = time.Rotating(\"rotate_after_a_year\", rotation_years=1)\nmain = scaleway.iam.ApiKey(\"main\",\n    application_id=main_scaleway_iam_application[\"id\"],\n    expires_at=rotate_after_a_year[\"rotationRfc3339\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rotateAfterAYear = new Time.Rotating(\"rotate_after_a_year\", new()\n    {\n        RotationYears = 1,\n    });\n\n    var main = new Scaleway.Iam.ApiKey(\"main\", new()\n    {\n        ApplicationId = mainScalewayIamApplication.Id,\n        ExpiresAt = rotateAfterAYear.RotationRfc3339,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trotateAfterAYear, err := time.NewRotating(ctx, \"rotate_after_a_year\", \u0026time.RotatingArgs{\n\t\t\tRotationYears: 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"main\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: pulumi.Any(mainScalewayIamApplication.Id),\n\t\t\tExpiresAt:     rotateAfterAYear.RotationRfc3339,\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.time.Rotating;\nimport com.pulumi.time.RotatingArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rotateAfterAYear = new Rotating(\"rotateAfterAYear\", RotatingArgs.builder()\n            .rotationYears(1)\n            .build());\n\n        var main = new ApiKey(\"main\", ApiKeyArgs.builder()\n            .applicationId(mainScalewayIamApplication.id())\n            .expiresAt(rotateAfterAYear.rotationRfc3339())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rotateAfterAYear:\n    type: time:Rotating\n    name: rotate_after_a_year\n    properties:\n      rotationYears: 1\n  main:\n    type: scaleway:iam:ApiKey\n    properties:\n      applicationId: ${mainScalewayIamApplication.id}\n      expiresAt: ${rotateAfterAYear.rotationRfc3339}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApi keys can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iamApiKey:IamApiKey main 11111111111111111111\n```\n\n\u003e **Warning**: While an \u003cspan pulumi-lang-nodejs=\"`iamApiKey`\" pulumi-lang-dotnet=\"`IamApiKey`\" pulumi-lang-go=\"`iamApiKey`\" pulumi-lang-python=\"`iam_api_key`\" pulumi-lang-yaml=\"`iamApiKey`\" pulumi-lang-java=\"`iamApiKey`\"\u003e`iamApiKey`\u003c/span\u003e can be imported, its \u003cspan pulumi-lang-nodejs=\"`secretKey`\" pulumi-lang-dotnet=\"`SecretKey`\" pulumi-lang-go=\"`secretKey`\" pulumi-lang-python=\"`secret_key`\" pulumi-lang-yaml=\"`secretKey`\" pulumi-lang-java=\"`secretKey`\"\u003e`secretKey`\u003c/span\u003e is a secret that is not exposed. An imported API key will have \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e as its secret key.\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the IAM API key.\n"
                },
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application attached to the API key.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IAM API key.\n"
                },
                "creationIp": {
                    "type": "string",
                    "description": "The IP Address of the device which created the API key.\n"
                },
                "defaultProjectId": {
                    "type": "string",
                    "description": "The default Project ID to use with Object Storage.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the API key.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the IAM API key is editable.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret Key of the IAM API key.\n",
                    "secret": true
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IAM API key.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "required": [
                "accessKey",
                "createdAt",
                "creationIp",
                "defaultProjectId",
                "editable",
                "secretKey",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application attached to the API key.\n",
                    "willReplaceOnChanges": true
                },
                "defaultProjectId": {
                    "type": "string",
                    "description": "The default Project ID to use with Object Storage.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "The description of the API key.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n",
                    "willReplaceOnChanges": true
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamApiKey resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key of the IAM API key.\n"
                    },
                    "applicationId": {
                        "type": "string",
                        "description": "ID of the application attached to the API key.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the IAM API key.\n"
                    },
                    "creationIp": {
                        "type": "string",
                        "description": "The IP Address of the device which created the API key.\n"
                    },
                    "defaultProjectId": {
                        "type": "string",
                        "description": "The default Project ID to use with Object Storage.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the API key.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the IAM API key is editable.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The date and time of the expiration of the IAM API key. Please note that in case of any changes,\nthe resource will be recreated.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret Key of the IAM API key.\n",
                        "secret": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the IAM API key.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "ID of the user attached to the API key.\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamapikey.IamApiKey has been deprecated in favor of scaleway.iam/apikey.ApiKey"
        },
        "scaleway:index/iamApplication:IamApplication": {
            "description": "Creates and manages Scaleway IAM Applications. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#applications-83ce5e).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.Application(\"main\", {\n    name: \"My application\",\n    description: \"a description\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.Application(\"main\",\n    name=\"My application\",\n    description=\"a description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.Application(\"main\", new()\n    {\n        Name = \"My application\",\n        Description = \"a description\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewApplication(ctx, \"main\", \u0026iam.ApplicationArgs{\n\t\t\tName:        pulumi.String(\"My application\"),\n\t\t\tDescription: pulumi.String(\"a 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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Application(\"main\", ApplicationArgs.builder()\n            .name(\"My application\")\n            .description(\"a description\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:Application\n    properties:\n      name: My application\n      description: a description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplications can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iamApplication:IamApplication main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the application.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the iam application.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the application is editable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the iam application.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the application.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the application.\n"
                }
            },
            "required": [
                "createdAt",
                "editable",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the iam application.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the iam application.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the application.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamApplication resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the application.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the iam application.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the application is editable.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the iam application.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the application is associated with.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the application.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the application.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamapplication.IamApplication has been deprecated in favor of scaleway.iam/application.Application"
        },
        "scaleway:index/iamGroup:IamGroup": {
            "description": "Creates and manages Scaleway IAM Groups.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#groups-f592eb).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst basic = new scaleway.iam.Group(\"basic\", {\n    name: \"iam_group_basic\",\n    description: \"basic description\",\n    applicationIds: [],\n    userIds: [],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbasic = scaleway.iam.Group(\"basic\",\n    name=\"iam_group_basic\",\n    description=\"basic description\",\n    application_ids=[],\n    user_ids=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var basic = new Scaleway.Iam.Group(\"basic\", new()\n    {\n        Name = \"iam_group_basic\",\n        Description = \"basic description\",\n        ApplicationIds = new[] {},\n        UserIds = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewGroup(ctx, \"basic\", \u0026iam.GroupArgs{\n\t\t\tName:           pulumi.String(\"iam_group_basic\"),\n\t\t\tDescription:    pulumi.String(\"basic description\"),\n\t\t\tApplicationIds: pulumi.StringArray{},\n\t\t\tUserIds:        pulumi.StringArray{},\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.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 basic = new Group(\"basic\", GroupArgs.builder()\n            .name(\"iam_group_basic\")\n            .description(\"basic description\")\n            .applicationIds()\n            .userIds()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  basic:\n    type: scaleway:iam:Group\n    properties:\n      name: iam_group_basic\n      description: basic description\n      applicationIds: []\n      userIds: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With applications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.iam.Application(\"app\", {});\nconst withApp = new scaleway.iam.Group(\"with_app\", {\n    name: \"iam_group_with_app\",\n    applicationIds: [app.id],\n    userIds: [],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.iam.Application(\"app\")\nwith_app = scaleway.iam.Group(\"with_app\",\n    name=\"iam_group_with_app\",\n    application_ids=[app.id],\n    user_ids=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Iam.Application(\"app\");\n\n    var withApp = new Scaleway.Iam.Group(\"with_app\", new()\n    {\n        Name = \"iam_group_with_app\",\n        ApplicationIds = new[]\n        {\n            app.Id,\n        },\n        UserIds = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := iam.NewApplication(ctx, \"app\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewGroup(ctx, \"with_app\", \u0026iam.GroupArgs{\n\t\t\tName: pulumi.String(\"iam_group_with_app\"),\n\t\t\tApplicationIds: pulumi.StringArray{\n\t\t\t\tapp.ID(),\n\t\t\t},\n\t\t\tUserIds: pulumi.StringArray{},\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.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Application(\"app\");\n\n        var withApp = new Group(\"withApp\", GroupArgs.builder()\n            .name(\"iam_group_with_app\")\n            .applicationIds(app.id())\n            .userIds()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n  withApp:\n    type: scaleway:iam:Group\n    name: with_app\n    properties:\n      name: iam_group_with_app\n      applicationIds:\n        - ${app.id}\n      userIds: []\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With users\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst users = std.toset({\n    input: [\n        \"user1@mail.com\",\n        \"user2@mail.com\",\n    ],\n}).result;\nconst usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: scaleway.iam.getUser({\n    email: __value,\n}) }), {});\nconst withUsers = new scaleway.iam.Group(\"with_users\", {\n    name: \"iam_group_with_app\",\n    applicationIds: [],\n    userIds: Object.values(usersGetUser).map(user =\u003e (user.id)),\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = std.toset(input=[\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n])[\"result\"]\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(users)}\nwith_users = scaleway.iam.Group(\"with_users\",\n    name=\"iam_group_with_app\",\n    application_ids=[],\n    user_ids=[user.id for user in users_get_user.values()])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = Std.Toset.Invoke(new()\n    {\n        Input = new[]\n        {\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        },\n    }).Result;\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return Scaleway.Iam.GetUser.Invoke(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var withUsers = new Scaleway.Iam.Group(\"with_users\", new()\n    {\n        Name = \"iam_group_with_app\",\n        ApplicationIds = new[] {},\n        UserIds = (usersGetUser).Values.Select(user =\u003e \n        {\n            return user.Id;\n        }).ToList(),\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM groups can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iamGroup:IamGroup basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the applications attached to the group.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the group"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM group.\n"
                },
                "externalMembership": {
                    "type": "boolean",
                    "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the group.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the group"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the users attached to the group.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the applications attached to the group.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM group.\n"
                },
                "externalMembership": {
                    "type": "boolean",
                    "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the group.\n"
                },
                "userIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of IDs of the users attached to the group.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamGroup resources.\n",
                "properties": {
                    "applicationIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of IDs of the applications attached to the group.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the group"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the IAM group.\n"
                    },
                    "externalMembership": {
                        "type": "boolean",
                        "description": "Manage membership externally. This make the resource ignore\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 application_ids. Should be used when using iam_group_membership\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IAM group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the group is associated with.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the group.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the group"
                    },
                    "userIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of IDs of the users attached to the group.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamgroup.IamGroup has been deprecated in favor of scaleway.iam/group.Group"
        },
        "scaleway:index/iamGroupMembership:IamGroupMembership": {
            "description": "Add members to an IAM group.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#groups-f592eb).\n\n## Example Usage\n\n### Application Membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst group = new scaleway.iam.Group(\"group\", {\n    name: \"my_group\",\n    externalMembership: true,\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my_app\"});\nconst member = new scaleway.iam.GroupMembership(\"member\", {\n    groupId: group.id,\n    applicationId: app.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ngroup = scaleway.iam.Group(\"group\",\n    name=\"my_group\",\n    external_membership=True)\napp = scaleway.iam.Application(\"app\", name=\"my_app\")\nmember = scaleway.iam.GroupMembership(\"member\",\n    group_id=group.id,\n    application_id=app.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @group = new Scaleway.Iam.Group(\"group\", new()\n    {\n        Name = \"my_group\",\n        ExternalMembership = true,\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my_app\",\n    });\n\n    var member = new Scaleway.Iam.GroupMembership(\"member\", new()\n    {\n        GroupId = @group.Id,\n        ApplicationId = app.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := iam.NewGroup(ctx, \"group\", \u0026iam.GroupArgs{\n\t\t\tName:               pulumi.String(\"my_group\"),\n\t\t\tExternalMembership: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my_app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewGroupMembership(ctx, \"member\", \u0026iam.GroupMembershipArgs{\n\t\t\tGroupId:       group.ID(),\n\t\t\tApplicationId: app.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.pulumi.scaleway.iam.Group;\nimport com.pulumi.scaleway.iam.GroupArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.GroupMembership;\nimport com.pulumi.scaleway.iam.GroupMembershipArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group = new Group(\"group\", GroupArgs.builder()\n            .name(\"my_group\")\n            .externalMembership(true)\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my_app\")\n            .build());\n\n        var member = new GroupMembership(\"member\", GroupMembershipArgs.builder()\n            .groupId(group.id())\n            .applicationId(app.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  group:\n    type: scaleway:iam:Group\n    properties:\n      name: my_group\n      externalMembership: true\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my_app\n  member:\n    type: scaleway:iam:GroupMembership\n    properties:\n      groupId: ${group.id}\n      applicationId: ${app.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Users membership\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n    const users = std.toset({\n        input: [\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        ],\n    }).result;\n    const usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: await scaleway.iam.getUser({\n        email: __value,\n    }) }), {});\n    const group = new scaleway.iam.Group(\"group\", {\n        name: \"my_group\",\n        externalMembership: true,\n    });\n    const members: scaleway.iam.GroupMembership[] = [];\n    for (const range of Object.entries(usersGetUser).sort().map(([k, v]) =\u003e ({key: k, value: v}))) {\n        members.push(new scaleway.iam.GroupMembership(`members-${range.key}`, {\n            groupId: group.id,\n            userId: range.value.id,\n        }));\n    }\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = std.toset(input=[\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n])[\"result\"]\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(users)}\ngroup = scaleway.iam.Group(\"group\",\n    name=\"my_group\",\n    external_membership=True)\nmembers: list[Any] = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in sorted((users_get_user).items())]:\n    members.append(scaleway.iam.GroupMembership(f\"members-{range['key']}\",\n        group_id=group.id,\n        user_id=range[\"value\"].id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n    var users = Std.Toset.Invoke(new()\n    {\n        Input = new[]\n        {\n            \"user1@mail.com\",\n            \"user2@mail.com\",\n        },\n    }).Result;\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return await Scaleway.Iam.GetUser.InvokeAsync(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var @group = new Scaleway.Iam.Group(\"group\", new()\n    {\n        Name = \"my_group\",\n        ExternalMembership = true,\n    });\n\n    var members = new List\u003cScaleway.Iam.GroupMembership\u003e();\n    foreach (var range in usersGetUser.Select(pair =\u003e new { pair.Key, pair.Value }))\n    {\n        members.Add(new Scaleway.Iam.GroupMembership($\"members-{range.Key}\", new()\n        {\n            GroupId = @group.Id,\n            UserId = range.Value.Id,\n        }));\n    }\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM group memberships can be imported using two format:\n\n- For user: `{group_id}/user/{user_id}`\n- For application: `{group_id}/app/{application_id}`\n\n```sh\n$ pulumi import scaleway:index/iamGroupMembership:IamGroupMembership app 11111111-1111-1111-1111-111111111111/app/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationId": {
                    "type": "string",
                    "description": "The ID of the application that will be added to the group.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group to add members to.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n"
                }
            },
            "required": [
                "groupId"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "The ID of the application that will be added to the group.\n",
                    "willReplaceOnChanges": true
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group to add members to.\n",
                    "willReplaceOnChanges": true
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "groupId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamGroupMembership resources.\n",
                "properties": {
                    "applicationId": {
                        "type": "string",
                        "description": "The ID of the application that will be added to the group.\n",
                        "willReplaceOnChanges": true
                    },
                    "groupId": {
                        "type": "string",
                        "description": "ID of the group to add members to.\n",
                        "willReplaceOnChanges": true
                    },
                    "userId": {
                        "type": "string",
                        "description": "The ID of the user that will be added to the group\n\n\u003e **Note** You must specify at least one: \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and/or \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\u003e.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamgroupmembership.IamGroupMembership has been deprecated in favor of scaleway.iam/groupmembership.GroupMembership"
        },
        "scaleway:index/iamPolicy:IamPolicy": {
            "description": "Creates and manages Scaleway IAM Policies. For more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#path-policies-create-a-new-policy).\n\n\u003e You can find a detailed list of all permission sets available at Scaleway in the permission sets [reference page](https://www.scaleway.com/en/docs/iam/reference-content/permission-sets/).\n\n## Example Usage\n\n### Create a policy for an organization's project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst objectReadOnly = new scaleway.iam.Policy(\"object_read_only\", {\n    name: \"my policy\",\n    description: \"gives app readonly access to object storage in project\",\n    applicationId: app.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ObjectStorageReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.account.get_project(name=\"default\")\napp = scaleway.iam.Application(\"app\", name=\"my app\")\nobject_read_only = scaleway.iam.Policy(\"object_read_only\",\n    name=\"my policy\",\n    description=\"gives app readonly access to object storage in project\",\n    application_id=app.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ObjectStorageReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var objectReadOnly = new Scaleway.Iam.Policy(\"object_read_only\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app readonly access to object storage in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"object_read_only\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app readonly access to object storage in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageReadOnly\"),\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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var objectReadOnly = new Policy(\"objectReadOnly\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app readonly access to object storage in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ObjectStorageReadOnly\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  objectReadOnly:\n    type: scaleway:iam:Policy\n    name: object_read_only\n    properties:\n      name: my policy\n      description: gives app readonly access to object storage in project\n      applicationId: ${app.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ObjectStorageReadOnly\nvariables:\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a policy for all current and future projects in an organization\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst objectReadOnly = new scaleway.iam.Policy(\"object_read_only\", {\n    name: \"my policy\",\n    description: \"gives app readonly access to object storage in project\",\n    applicationId: app.id,\n    rules: [{\n        organizationId: app.organizationId,\n        permissionSetNames: [\"ObjectStorageReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\napp = scaleway.iam.Application(\"app\", name=\"my app\")\nobject_read_only = scaleway.iam.Policy(\"object_read_only\",\n    name=\"my policy\",\n    description=\"gives app readonly access to object storage in project\",\n    application_id=app.id,\n    rules=[{\n        \"organization_id\": app.organization_id,\n        \"permission_set_names\": [\"ObjectStorageReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var objectReadOnly = new Scaleway.Iam.Policy(\"object_read_only\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app readonly access to object storage in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                OrganizationId = app.OrganizationId,\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"object_read_only\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app readonly access to object storage in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tOrganizationId: app.OrganizationId,\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageReadOnly\"),\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.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var objectReadOnly = new Policy(\"objectReadOnly\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app readonly access to object storage in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .organizationId(app.organizationId())\n                .permissionSetNames(\"ObjectStorageReadOnly\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  objectReadOnly:\n    type: scaleway:iam:Policy\n    name: object_read_only\n    properties:\n      name: my policy\n      description: gives app readonly access to object storage in project\n      applicationId: ${app.id}\n      rules:\n        - organizationId: ${app.organizationId}\n          permissionSetNames:\n            - ObjectStorageReadOnly\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a permission for multiple users using a group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst users = [\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n];\nconst projectName = \"default\";\nconst project = scaleway.account.getProject({\n    name: projectName,\n});\nconst usersGetUser = .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [String(__key)]: scaleway.iam.getUser({\n    email: __value,\n}) }), {});\nconst withUsers = new scaleway.iam.Group(\"with_users\", {\n    name: \"developers\",\n    userIds: Object.values(usersGetUser).map(user =\u003e (user.id)),\n});\nconst iamTfStoragePolicy = new scaleway.iam.Policy(\"iam_tf_storage_policy\", {\n    name: \"developers permissions\",\n    groupId: withUsers.id,\n    rules: [{\n        projectIds: [project.then(project =\u003e project.id)],\n        permissionSetNames: [\"InstancesReadOnly\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nusers = [\n    \"user1@mail.com\",\n    \"user2@mail.com\",\n]\nproject_name = \"default\"\nproject = scaleway.account.get_project(name=project_name)\nusers_get_user = {str(__key): scaleway.iam.get_user(email=__value) for __key, __value in enumerate(std.toset(input=users)[\"result\"])}\nwith_users = scaleway.iam.Group(\"with_users\",\n    name=\"developers\",\n    user_ids=[user.id for user in users_get_user.values()])\niam_tf_storage_policy = scaleway.iam.Policy(\"iam_tf_storage_policy\",\n    name=\"developers permissions\",\n    group_id=with_users.id,\n    rules=[{\n        \"project_ids\": [project.id],\n        \"permission_set_names\": [\"InstancesReadOnly\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = new[]\n    {\n        \"user1@mail.com\",\n        \"user2@mail.com\",\n    };\n\n    var projectName = \"default\";\n\n    var project = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = projectName,\n    });\n\n    var usersGetUser = .ToDictionary(item =\u003e {\n        var __key = item.Key;\n        return __key;\n    }, item =\u003e {\n        var __value = item.Value;\n        return Scaleway.Iam.GetUser.Invoke(new()\n        {\n            Email = __value,\n        });\n    });\n\n    var withUsers = new Scaleway.Iam.Group(\"with_users\", new()\n    {\n        Name = \"developers\",\n        UserIds = (usersGetUser).Values.Select(user =\u003e \n        {\n            return user.Id;\n        }).ToList(),\n    });\n\n    var iamTfStoragePolicy = new Scaleway.Iam.Policy(\"iam_tf_storage_policy\", new()\n    {\n        Name = \"developers permissions\",\n        GroupId = withUsers.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    project.Apply(getProjectResult =\u003e getProjectResult.Id),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"InstancesReadOnly\",\n                },\n            },\n        },\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a policy with a particular condition\n\nIAM policy rule can use a condition to be applied.\nThe following variables are available:\n\n- `request.ip`\n- `request.user_agent`\n- `request.time`\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.Policy(\"main\", {\n    name: \"tf_tests_policy_condition\",\n    noPrincipal: true,\n    rules: [{\n        organizationId: \"%s\",\n        permissionSetNames: [\"AllProductsFullAccess\"],\n        condition: \"request.user_agent == 'My User Agent'\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.Policy(\"main\",\n    name=\"tf_tests_policy_condition\",\n    no_principal=True,\n    rules=[{\n        \"organization_id\": \"%s\",\n        \"permission_set_names\": [\"AllProductsFullAccess\"],\n        \"condition\": \"request.user_agent == 'My User Agent'\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.Policy(\"main\", new()\n    {\n        Name = \"tf_tests_policy_condition\",\n        NoPrincipal = true,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                OrganizationId = \"%s\",\n                PermissionSetNames = new[]\n                {\n                    \"AllProductsFullAccess\",\n                },\n                Condition = \"request.user_agent == 'My User Agent'\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewPolicy(ctx, \"main\", \u0026iam.PolicyArgs{\n\t\t\tName:        pulumi.String(\"tf_tests_policy_condition\"),\n\t\t\tNoPrincipal: pulumi.Bool(true),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tOrganizationId: pulumi.String(\"%s\"),\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"AllProductsFullAccess\"),\n\t\t\t\t\t},\n\t\t\t\t\tCondition: pulumi.String(\"request.user_agent == 'My User Agent'\"),\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.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Policy(\"main\", PolicyArgs.builder()\n            .name(\"tf_tests_policy_condition\")\n            .noPrincipal(true)\n            .rules(PolicyRuleArgs.builder()\n                .organizationId(\"%s\")\n                .permissionSetNames(\"AllProductsFullAccess\")\n                .condition(\"request.user_agent == 'My User Agent'\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:Policy\n    properties:\n      name: tf_tests_policy_condition\n      noPrincipal: true\n      rules:\n        - organizationId: '%s'\n          permissionSetNames:\n            - AllProductsFullAccess\n          condition: request.user_agent == 'My User Agent'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicies can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iamPolicy:IamPolicy main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application the policy will be linked to\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the policy.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM policy.\n"
                },
                "editable": {
                    "type": "boolean",
                    "description": "Whether the policy is editable.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group the policy will be linked to\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM policy.\n"
                },
                "noPrincipal": {
                    "type": "boolean",
                    "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IamPolicyRule:IamPolicyRule"
                    },
                    "description": "List of rules in the policy.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IAM policy.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the policy.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user the policy will be linked to\n"
                }
            },
            "required": [
                "createdAt",
                "editable",
                "name",
                "organizationId",
                "rules",
                "updatedAt"
            ],
            "inputProperties": {
                "applicationId": {
                    "type": "string",
                    "description": "ID of the application the policy will be linked to\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IAM policy.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "ID of the group the policy will be linked to\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IAM policy.\n"
                },
                "noPrincipal": {
                    "type": "boolean",
                    "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IamPolicyRule:IamPolicyRule"
                    },
                    "description": "List of rules in the policy.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IAM policy.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "ID of the user the policy will be linked to\n"
                }
            },
            "requiredInputs": [
                "rules"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamPolicy resources.\n",
                "properties": {
                    "applicationId": {
                        "type": "string",
                        "description": "ID of the application the policy will be linked to\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the policy.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the IAM policy.\n"
                    },
                    "editable": {
                        "type": "boolean",
                        "description": "Whether the policy is editable.\n"
                    },
                    "groupId": {
                        "type": "string",
                        "description": "ID of the group the policy will be linked to\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IAM policy.\n"
                    },
                    "noPrincipal": {
                        "type": "boolean",
                        "description": "If the policy doesn't apply to a principal.\n\n\u003e **Important** Only one of \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\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`applicationId`\" pulumi-lang-dotnet=\"`ApplicationId`\" pulumi-lang-go=\"`applicationId`\" pulumi-lang-python=\"`application_id`\" pulumi-lang-yaml=\"`applicationId`\" pulumi-lang-java=\"`applicationId`\"\u003e`applicationId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`noPrincipal`\" pulumi-lang-dotnet=\"`NoPrincipal`\" pulumi-lang-go=\"`noPrincipal`\" pulumi-lang-python=\"`no_principal`\" pulumi-lang-yaml=\"`noPrincipal`\" pulumi-lang-java=\"`noPrincipal`\"\u003e`noPrincipal`\u003c/span\u003e may be set.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the policy is associated with.\n"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/IamPolicyRule:IamPolicyRule"
                        },
                        "description": "List of rules in the policy.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the IAM policy.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the policy.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "ID of the user the policy will be linked to\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iampolicy.IamPolicy has been deprecated in favor of scaleway.iam/policy.Policy"
        },
        "scaleway:index/iamSshKey:IamSshKey": {
            "description": "Creates and manages Scaleway IAM SSH Keys.\nFor more information refer to the [IAM API documentation](https://www.scaleway.com/en/developers/api/iam/#ssh-keys-d8ccd4).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iam.SshKey(\"main\", {\n    name: \"main\",\n    publicKey: \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iam.SshKey(\"main\",\n    name=\"main\",\n    public_key=\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iam.SshKey(\"main\", new()\n    {\n        Name = \"main\",\n        PublicKey = \"\u003cYOUR-PUBLIC-SSH-KEY\u003e\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iam.NewSshKey(ctx, \"main\", \u0026iam.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"main\"),\n\t\t\tPublicKey: pulumi.String(\"\u003cYOUR-PUBLIC-SSH-KEY\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.pulumi.scaleway.iam.SshKey;\nimport com.pulumi.scaleway.iam.SshKeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new SshKey(\"main\", SshKeyArgs.builder()\n            .name(\"main\")\n            .publicKey(\"\u003cYOUR-PUBLIC-SSH-KEY\u003e\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iam:SshKey\n    properties:\n      name: main\n      publicKey: \u003cYOUR-PUBLIC-SSH-KEY\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH keys can be imported using the \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 scaleway:index/iamSshKey:IamSshKey main 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the SSH key.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status.\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the iam SSH key.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the organization the SSH key is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the SSH key.\n"
                }
            },
            "required": [
                "createdAt",
                "fingerprint",
                "name",
                "organizationId",
                "projectId",
                "publicKey",
                "updatedAt"
            ],
            "inputProperties": {
                "disabled": {
                    "type": "boolean",
                    "description": "The SSH key status.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public SSH key to be added.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamSshKey resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the SSH key.\n"
                    },
                    "disabled": {
                        "type": "boolean",
                        "description": "The SSH key status.\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the iam SSH key.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The ID of the organization the SSH key is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the SSH key is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public SSH key to be added.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the SSH key.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamsshkey.IamSshKey has been deprecated in favor of scaleway.iam/sshkey.SshKey"
        },
        "scaleway:index/iamUser:IamUser": {
            "description": "Creates and manages Scaleway IAM [Users](https://www.scaleway.com/en/docs/iam/concepts/#member).\n\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iam/#path-users-list-users-of-an-organization).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic IAM user creation\nconst user = new scaleway.iam.User(\"user\", {\n    email: \"foo@test.com\",\n    tags: [\"test-tag\"],\n    username: \"foo\",\n    firstName: \"Foo\",\n    lastName: \"Bar\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Basic IAM user creation\nuser = scaleway.iam.User(\"user\",\n    email=\"foo@test.com\",\n    tags=[\"test-tag\"],\n    username=\"foo\",\n    first_name=\"Foo\",\n    last_name=\"Bar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic IAM user creation\n    var user = new Scaleway.Iam.User(\"user\", new()\n    {\n        Email = \"foo@test.com\",\n        Tags = new[]\n        {\n            \"test-tag\",\n        },\n        Username = \"foo\",\n        FirstName = \"Foo\",\n        LastName = \"Bar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic IAM user creation\n\t\t_, err := iam.NewUser(ctx, \"user\", \u0026iam.UserArgs{\n\t\t\tEmail: pulumi.String(\"foo@test.com\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test-tag\"),\n\t\t\t},\n\t\t\tUsername:  pulumi.String(\"foo\"),\n\t\t\tFirstName: pulumi.String(\"Foo\"),\n\t\t\tLastName:  pulumi.String(\"Bar\"),\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.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 IAM user creation\n        var user = new User(\"user\", UserArgs.builder()\n            .email(\"foo@test.com\")\n            .tags(\"test-tag\")\n            .username(\"foo\")\n            .firstName(\"Foo\")\n            .lastName(\"Bar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic IAM user creation\n  user:\n    type: scaleway:iam:User\n    properties:\n      email: foo@test.com\n      tags:\n        - test-tag\n      username: foo\n      firstName: Foo\n      lastName: Bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst users = [\n    {\n        email: \"test@test.com\",\n        username: \"test\",\n    },\n    {\n        email: \"test2@test.com\",\n        username: \"test2\",\n    },\n];\nconst usersUser: scaleway.iam.User[] = [];\nfor (const range = {value: 0}; range.value \u003c users.length; range.value++) {\n    usersUser.push(new scaleway.iam.User(`users-${range.value}`, {\n        email: users[range.value].email,\n        username: users[range.value].username,\n    }));\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumiverse_scaleway as scaleway\n\nusers = [\n    {\n        \"email\": \"test@test.com\",\n        \"username\": \"test\",\n    },\n    {\n        \"email\": \"test2@test.com\",\n        \"username\": \"test2\",\n    },\n]\nusers_user: list[Any] = []\nfor range in [{\"value\": i} for i in range(0, len(users))]:\n    users_user.append(scaleway.iam.User(f\"users-{range['value']}\",\n        email=users[range[\"value\"]][\"email\"],\n        username=users[range[\"value\"]][\"username\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var users = new[]\n    {\n        \n        {\n            { \"email\", \"test@test.com\" },\n            { \"username\", \"test\" },\n        },\n        \n        {\n            { \"email\", \"test2@test.com\" },\n            { \"username\", \"test2\" },\n        },\n    };\n\n    var usersUser = new List\u003cScaleway.Iam.User\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c users.Length; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        usersUser.Add(new Scaleway.Iam.User($\"users-{range.Value}\", new()\n        {\n            Email = users[range.Value].Email,\n            Username = users[range.Value].Username,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tusers := []map[string]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"email\":    \"test@test.com\",\n\t\t\t\t\"username\": \"test\",\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"email\":    \"test2@test.com\",\n\t\t\t\t\"username\": \"test2\",\n\t\t\t},\n\t\t}\n\t\tvar usersUser []*iam.User\n\t\tfor index := 0; index \u003c len(users); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := iam.NewUser(ctx, fmt.Sprintf(\"users-%v\", key0), \u0026iam.UserArgs{\n\t\t\t\tEmail:    pulumi.String(users[val0][\"email\"].(string)),\n\t\t\t\tUsername: pulumi.String(users[val0][\"username\"].(string)),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tusersUser = append(usersUser, __res)\n\t\t}\n\t\treturn nil\n\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.scaleway.iam.User;\nimport com.pulumi.scaleway.iam.UserArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 users = Arrays.asList(        \n            Map.ofEntries(\n                Map.entry(\"email\", \"test@test.com\"),\n                Map.entry(\"username\", \"test\")\n            ),\n            Map.ofEntries(\n                Map.entry(\"email\", \"test2@test.com\"),\n                Map.entry(\"username\", \"test2\")\n            ));\n\n        for (var i = 0; i \u003c users.length(); i++) {\n            new User(\"usersUser-\" + i, UserArgs.builder()\n                .email(users[range.value()].email())\n                .username(users[range.value()].username())\n                .build());\n\n        \n}\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIAM users can be imported using the `{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iamUser:IamUser basic 11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "accountRootUserId": {
                    "type": "string",
                    "description": "The ID of the account root user associated with the user.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the IAM user.\n"
                },
                "deletable": {
                    "type": "boolean",
                    "description": "Whether the IAM user is deletable.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "The user's first name.\n"
                },
                "lastLoginAt": {
                    "type": "string",
                    "description": "The date of the last login.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "The user's last name.\n"
                },
                "locale": {
                    "type": "string",
                    "description": "The user's locale (e.g., en_US).\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Whether the user is locked.\n"
                },
                "mfa": {
                    "type": "boolean",
                    "description": "Whether the MFA is enabled.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                    "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "The user's phone number.\n"
                },
                "sendPasswordEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send an email containing the password for first access.\n"
                },
                "sendWelcomeEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the user.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the IAM user.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the IAM user.\n"
                }
            },
            "required": [
                "accountRootUserId",
                "createdAt",
                "deletable",
                "email",
                "lastLoginAt",
                "locale",
                "locked",
                "mfa",
                "organizationId",
                "status",
                "type",
                "updatedAt",
                "username"
            ],
            "inputProperties": {
                "email": {
                    "type": "string",
                    "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                },
                "firstName": {
                    "type": "string",
                    "description": "The user's first name.\n"
                },
                "lastName": {
                    "type": "string",
                    "description": "The user's last name.\n"
                },
                "locale": {
                    "type": "string",
                    "description": "The user's locale (e.g., en_US).\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                    "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "The user's phone number.\n"
                },
                "sendPasswordEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send an email containing the password for first access.\n"
                },
                "sendWelcomeEmail": {
                    "type": "boolean",
                    "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the user.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username of the IAM user.\n"
                }
            },
            "requiredInputs": [
                "email",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IamUser resources.\n",
                "properties": {
                    "accountRootUserId": {
                        "type": "string",
                        "description": "The ID of the account root user associated with the user.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the IAM user.\n"
                    },
                    "deletable": {
                        "type": "boolean",
                        "description": "Whether the IAM user is deletable.\n"
                    },
                    "email": {
                        "type": "string",
                        "description": "The email of the IAM user. For Guest users, this argument is not editable.\n"
                    },
                    "firstName": {
                        "type": "string",
                        "description": "The user's first name.\n"
                    },
                    "lastLoginAt": {
                        "type": "string",
                        "description": "The date of the last login.\n"
                    },
                    "lastName": {
                        "type": "string",
                        "description": "The user's last name.\n"
                    },
                    "locale": {
                        "type": "string",
                        "description": "The user's locale (e.g., en_US).\n"
                    },
                    "locked": {
                        "type": "boolean",
                        "description": "Whether the user is locked.\n"
                    },
                    "mfa": {
                        "type": "boolean",
                        "description": "Whether the MFA is enabled.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`organizationId`\" pulumi-lang-dotnet=\"`OrganizationId`\" pulumi-lang-go=\"`organizationId`\" pulumi-lang-python=\"`organization_id`\" pulumi-lang-yaml=\"`organizationId`\" pulumi-lang-java=\"`organizationId`\"\u003e`organizationId`\u003c/span\u003e) The ID of the organization the user is associated with.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "The password for first access. Only one 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 or \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 should be specified.\n",
                        "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.\nThe password for first access in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "phoneNumber": {
                        "type": "string",
                        "description": "The user's phone number.\n"
                    },
                    "sendPasswordEmail": {
                        "type": "boolean",
                        "description": "Whether or not to send an email containing the password for first access.\n"
                    },
                    "sendWelcomeEmail": {
                        "type": "boolean",
                        "description": "Whether or not to send a welcome email that includes onboarding information.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the user.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the IAM user.\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The username of the IAM user.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iamuser.IamUser has been deprecated in favor of scaleway.iam/user.User"
        },
        "scaleway:index/inferenceDeployment:InferenceDeployment": {
            "description": "Creates and manages Scaleway Managed Inference deployments.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/inference/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst myModel = scaleway.inference.getModel({\n    name: \"meta/llama-3.1-8b-instruct:fp8\",\n});\nconst deployment = new scaleway.inference.Deployment(\"deployment\", {\n    name: \"tf-inference-deployment\",\n    nodeType: \"L4\",\n    modelName: myModel.then(myModel =\u003e myModel.id),\n    publicEndpoint: {\n        isEnabled: true,\n    },\n    acceptEula: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmy_model = scaleway.inference.get_model(name=\"meta/llama-3.1-8b-instruct:fp8\")\ndeployment = scaleway.inference.Deployment(\"deployment\",\n    name=\"tf-inference-deployment\",\n    node_type=\"L4\",\n    model_name=my_model.id,\n    public_endpoint={\n        \"is_enabled\": True,\n    },\n    accept_eula=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myModel = Scaleway.Inference.GetModel.Invoke(new()\n    {\n        Name = \"meta/llama-3.1-8b-instruct:fp8\",\n    });\n\n    var deployment = new Scaleway.Inference.Deployment(\"deployment\", new()\n    {\n        Name = \"tf-inference-deployment\",\n        NodeType = \"L4\",\n        ModelName = myModel.Apply(getModelResult =\u003e getModelResult.Id),\n        PublicEndpoint = new Scaleway.Inference.Inputs.DeploymentPublicEndpointArgs\n        {\n            IsEnabled = true,\n        },\n        AcceptEula = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/inference\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyModel, err := inference.LookupModel(ctx, \u0026inference.LookupModelArgs{\n\t\t\tName: pulumi.StringRef(\"meta/llama-3.1-8b-instruct:fp8\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = inference.NewDeployment(ctx, \"deployment\", \u0026inference.DeploymentArgs{\n\t\t\tName:      pulumi.String(\"tf-inference-deployment\"),\n\t\t\tNodeType:  pulumi.String(\"L4\"),\n\t\t\tModelName: myModel.Id,\n\t\t\tPublicEndpoint: \u0026inference.DeploymentPublicEndpointArgs{\n\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAcceptEula: 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.scaleway.inference.InferenceFunctions;\nimport com.pulumi.scaleway.inference.inputs.GetModelArgs;\nimport com.pulumi.scaleway.inference.Deployment;\nimport com.pulumi.scaleway.inference.DeploymentArgs;\nimport com.pulumi.scaleway.inference.inputs.DeploymentPublicEndpointArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myModel = InferenceFunctions.getModel(GetModelArgs.builder()\n            .name(\"meta/llama-3.1-8b-instruct:fp8\")\n            .build());\n\n        var deployment = new Deployment(\"deployment\", DeploymentArgs.builder()\n            .name(\"tf-inference-deployment\")\n            .nodeType(\"L4\")\n            .modelName(myModel.id())\n            .publicEndpoint(DeploymentPublicEndpointArgs.builder()\n                .isEnabled(true)\n                .build())\n            .acceptEula(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  deployment:\n    type: scaleway:inference:Deployment\n    properties:\n      name: tf-inference-deployment\n      nodeType: L4\n      modelName: ${myModel.id}\n      publicEndpoint:\n        isEnabled: true\n      acceptEula: true\nvariables:\n  myModel:\n    fn::invoke:\n      function: scaleway:inference:getModel\n      arguments:\n        name: meta/llama-3.1-8b-instruct:fp8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunctions can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/inferenceDeployment:InferenceDeployment deployment fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acceptEula": {
                    "type": "boolean",
                    "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the deployment.\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool.\n"
                },
                "modelId": {
                    "type": "string",
                    "description": "The model id used for the deployment.\n"
                },
                "modelName": {
                    "type": "string",
                    "description": "The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The deployment name.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n"
                },
                "privateEndpoint": {
                    "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateEndpoint:InferenceDeploymentPrivateEndpoint",
                    "description": "Configuration of the deployment's private endpoint.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateIp:InferenceDeploymentPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the deployment.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n"
                },
                "publicEndpoint": {
                    "$ref": "#/types/scaleway:index/InferenceDeploymentPublicEndpoint:InferenceDeploymentPublicEndpoint",
                    "description": "Configuration of the deployment's public endpoint.\n"
                },
                "quantization": {
                    "type": "integer",
                    "description": "The number of bits each model parameter should be quantized to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the pool.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the deployment.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the deployment.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the deployment.\n"
                }
            },
            "required": [
                "createdAt",
                "modelId",
                "modelName",
                "name",
                "nodeType",
                "privateIps",
                "projectId",
                "size",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "acceptEula": {
                    "type": "boolean",
                    "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool.\n"
                },
                "modelId": {
                    "type": "string",
                    "description": "The model id used for the deployment.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The deployment name.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n",
                    "willReplaceOnChanges": true
                },
                "privateEndpoint": {
                    "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateEndpoint:InferenceDeploymentPrivateEndpoint",
                    "description": "Configuration of the deployment's private endpoint.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateIp:InferenceDeploymentPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the deployment.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicEndpoint": {
                    "$ref": "#/types/scaleway:index/InferenceDeploymentPublicEndpoint:InferenceDeploymentPublicEndpoint",
                    "description": "Configuration of the deployment's public endpoint.\n"
                },
                "quantization": {
                    "type": "integer",
                    "description": "The number of bits each model parameter should be quantized to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the deployment.\n"
                }
            },
            "requiredInputs": [
                "modelId",
                "nodeType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InferenceDeployment resources.\n",
                "properties": {
                    "acceptEula": {
                        "type": "boolean",
                        "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the deployment.\n"
                    },
                    "maxSize": {
                        "type": "integer",
                        "description": "The maximum size of the pool.\n"
                    },
                    "minSize": {
                        "type": "integer",
                        "description": "The minimum size of the pool.\n"
                    },
                    "modelId": {
                        "type": "string",
                        "description": "The model id used for the deployment.\n",
                        "willReplaceOnChanges": true
                    },
                    "modelName": {
                        "type": "string",
                        "description": "The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The deployment name.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n",
                        "willReplaceOnChanges": true
                    },
                    "privateEndpoint": {
                        "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateEndpoint:InferenceDeploymentPrivateEndpoint",
                        "description": "Configuration of the deployment's private endpoint.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InferenceDeploymentPrivateIp:InferenceDeploymentPrivateIp"
                        },
                        "description": "The private IPv4 address associated with the deployment.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicEndpoint": {
                        "$ref": "#/types/scaleway:index/InferenceDeploymentPublicEndpoint:InferenceDeploymentPublicEndpoint",
                        "description": "Configuration of the deployment's public endpoint.\n"
                    },
                    "quantization": {
                        "type": "integer",
                        "description": "The number of bits each model parameter should be quantized to"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the deployment is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the pool.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the deployment.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the deployment.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the deployment.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/inferencedeployment.InferenceDeployment has been deprecated in favor of scaleway.inference/deployment.Deployment"
        },
        "scaleway:index/instanceImage:InstanceImage": {
            "description": "Creates and manages Scaleway Compute Images.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-images-list-instance-images).\n\n## Example Usage\n\n### From a volume\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst volume = new scaleway.instance.Volume(\"volume\", {\n    type: \"b_ssd\",\n    sizeInGb: 20,\n});\nconst volumeSnapshot = new scaleway.instance.Snapshot(\"volume_snapshot\", {volumeId: volume.id});\nconst volumeImage = new scaleway.instance.Image(\"volume_image\", {\n    name: \"image_from_volume\",\n    rootVolumeId: volumeSnapshot.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvolume = scaleway.instance.Volume(\"volume\",\n    type=\"b_ssd\",\n    size_in_gb=20)\nvolume_snapshot = scaleway.instance.Snapshot(\"volume_snapshot\", volume_id=volume.id)\nvolume_image = scaleway.instance.Image(\"volume_image\",\n    name=\"image_from_volume\",\n    root_volume_id=volume_snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume = new Scaleway.Instance.Volume(\"volume\", new()\n    {\n        Type = \"b_ssd\",\n        SizeInGb = 20,\n    });\n\n    var volumeSnapshot = new Scaleway.Instance.Snapshot(\"volume_snapshot\", new()\n    {\n        VolumeId = volume.Id,\n    });\n\n    var volumeImage = new Scaleway.Instance.Image(\"volume_image\", new()\n    {\n        Name = \"image_from_volume\",\n        RootVolumeId = volumeSnapshot.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume, err := instance.NewVolume(ctx, \"volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"b_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeSnapshot, err := instance.NewSnapshot(ctx, \"volume_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: volume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"volume_image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_from_volume\"),\n\t\t\tRootVolumeId: volumeSnapshot.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.pulumi.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume = new Volume(\"volume\", VolumeArgs.builder()\n            .type(\"b_ssd\")\n            .sizeInGb(20)\n            .build());\n\n        var volumeSnapshot = new Snapshot(\"volumeSnapshot\", SnapshotArgs.builder()\n            .volumeId(volume.id())\n            .build());\n\n        var volumeImage = new Image(\"volumeImage\", ImageArgs.builder()\n            .name(\"image_from_volume\")\n            .rootVolumeId(volumeSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume:\n    type: scaleway:instance:Volume\n    properties:\n      type: b_ssd\n      sizeInGb: 20\n  volumeSnapshot:\n    type: scaleway:instance:Snapshot\n    name: volume_snapshot\n    properties:\n      volumeId: ${volume.id}\n  volumeImage:\n    type: scaleway:instance:Image\n    name: volume_image\n    properties:\n      name: image_from_volume\n      rootVolumeId: ${volumeSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From a server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n});\nconst serverSnapshot = new scaleway.instance.Snapshot(\"server_snapshot\", {volumeId: main.rootVolume[0].volumeId});\nconst serverImage = new scaleway.instance.Image(\"server_image\", {\n    name: \"image_from_server\",\n    rootVolumeId: serverSnapshot.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\")\nserver_snapshot = scaleway.instance.Snapshot(\"server_snapshot\", volume_id=main[\"rootVolume\"][0][\"volumeId\"])\nserver_image = scaleway.instance.Image(\"server_image\",\n    name=\"image_from_server\",\n    root_volume_id=server_snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n    });\n\n    var serverSnapshot = new Scaleway.Instance.Snapshot(\"server_snapshot\", new()\n    {\n        VolumeId = main.RootVolume[0].VolumeId,\n    });\n\n    var serverImage = new Scaleway.Instance.Image(\"server_image\", new()\n    {\n        Name = \"image_from_server\",\n        RootVolumeId = serverSnapshot.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverSnapshot, err := instance.NewSnapshot(ctx, \"server_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: pulumi.Any(main.RootVolume[0].VolumeId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"server_image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_from_server\"),\n\t\t\tRootVolumeId: serverSnapshot.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.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .build());\n\n        var serverSnapshot = new Snapshot(\"serverSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.rootVolume()[0].volumeId())\n            .build());\n\n        var serverImage = new Image(\"serverImage\", ImageArgs.builder()\n            .name(\"image_from_server\")\n            .rootVolumeId(serverSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n  serverSnapshot:\n    type: scaleway:instance:Snapshot\n    name: server_snapshot\n    properties:\n      volumeId: ${main.rootVolume[0].volumeId}\n  serverImage:\n    type: scaleway:instance:Image\n    name: server_image\n    properties:\n      name: image_from_server\n      rootVolumeId: ${serverSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n});\nconst volume = new scaleway.instance.Volume(\"volume\", {\n    type: \"b_ssd\",\n    sizeInGb: 20,\n});\nconst volumeSnapshot = new scaleway.instance.Snapshot(\"volume_snapshot\", {volumeId: volume.id});\nconst serverSnapshot = new scaleway.instance.Snapshot(\"server_snapshot\", {volumeId: main.rootVolume[0].volumeId});\nconst image = new scaleway.instance.Image(\"image\", {\n    name: \"image_with_extra_volumes\",\n    rootVolumeId: serverSnapshot.id,\n    additionalVolumeIds: [volumeSnapshot.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\")\nvolume = scaleway.instance.Volume(\"volume\",\n    type=\"b_ssd\",\n    size_in_gb=20)\nvolume_snapshot = scaleway.instance.Snapshot(\"volume_snapshot\", volume_id=volume.id)\nserver_snapshot = scaleway.instance.Snapshot(\"server_snapshot\", volume_id=main[\"rootVolume\"][0][\"volumeId\"])\nimage = scaleway.instance.Image(\"image\",\n    name=\"image_with_extra_volumes\",\n    root_volume_id=server_snapshot.id,\n    additional_volume_ids=[volume_snapshot.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n    });\n\n    var volume = new Scaleway.Instance.Volume(\"volume\", new()\n    {\n        Type = \"b_ssd\",\n        SizeInGb = 20,\n    });\n\n    var volumeSnapshot = new Scaleway.Instance.Snapshot(\"volume_snapshot\", new()\n    {\n        VolumeId = volume.Id,\n    });\n\n    var serverSnapshot = new Scaleway.Instance.Snapshot(\"server_snapshot\", new()\n    {\n        VolumeId = main.RootVolume[0].VolumeId,\n    });\n\n    var image = new Scaleway.Instance.Image(\"image\", new()\n    {\n        Name = \"image_with_extra_volumes\",\n        RootVolumeId = serverSnapshot.Id,\n        AdditionalVolumeIds = new[]\n        {\n            volumeSnapshot.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolume, err := instance.NewVolume(ctx, \"volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"b_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeSnapshot, err := instance.NewSnapshot(ctx, \"volume_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: volume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverSnapshot, err := instance.NewSnapshot(ctx, \"server_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: pulumi.Any(main.RootVolume[0].VolumeId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_with_extra_volumes\"),\n\t\t\tRootVolumeId: serverSnapshot.ID(),\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tvolumeSnapshot.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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .build());\n\n        var volume = new Volume(\"volume\", VolumeArgs.builder()\n            .type(\"b_ssd\")\n            .sizeInGb(20)\n            .build());\n\n        var volumeSnapshot = new Snapshot(\"volumeSnapshot\", SnapshotArgs.builder()\n            .volumeId(volume.id())\n            .build());\n\n        var serverSnapshot = new Snapshot(\"serverSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.rootVolume()[0].volumeId())\n            .build());\n\n        var image = new Image(\"image\", ImageArgs.builder()\n            .name(\"image_with_extra_volumes\")\n            .rootVolumeId(serverSnapshot.id())\n            .additionalVolumeIds(volumeSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n  volume:\n    type: scaleway:instance:Volume\n    properties:\n      type: b_ssd\n      sizeInGb: 20\n  volumeSnapshot:\n    type: scaleway:instance:Snapshot\n    name: volume_snapshot\n    properties:\n      volumeId: ${volume.id}\n  serverSnapshot:\n    type: scaleway:instance:Snapshot\n    name: server_snapshot\n    properties:\n      volumeId: ${main.rootVolume[0].volumeId}\n  image:\n    type: scaleway:instance:Image\n    properties:\n      name: image_with_extra_volumes\n      rootVolumeId: ${serverSnapshot.id}\n      additionalVolumeIds:\n        - ${volumeSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImages can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceImage:InstanceImage main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                },
                "additionalVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceImageAdditionalVolume:InstanceImageAdditionalVolume"
                    },
                    "description": "The description of the extra volumes attached to the image.\n"
                },
                "architecture": {
                    "type": "string",
                    "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                },
                "creationDate": {
                    "type": "string",
                    "description": "Date of the image creation.\n"
                },
                "fromServerId": {
                    "type": "string",
                    "description": "ID of the server the image is based on (in case it is a backup).\n"
                },
                "modificationDate": {
                    "type": "string",
                    "description": "Date of image latest update.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the image is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the image is associated with.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "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 if the image is public.\n"
                },
                "rootVolumeId": {
                    "type": "string",
                    "description": "The ID of the snapshot of the volume to be used as root in the image.\n"
                },
                "rootVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceImageRootVolume:InstanceImageRootVolume"
                    },
                    "description": "The description of the root volume attached to the image.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the image. Possible values are: \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone in which the image should be created.\n"
                }
            },
            "required": [
                "additionalVolumes",
                "creationDate",
                "fromServerId",
                "modificationDate",
                "name",
                "organizationId",
                "projectId",
                "rootVolumes",
                "rootVolumeId",
                "state"
            ],
            "inputProperties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                },
                "architecture": {
                    "type": "string",
                    "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the image is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "public": {
                    "type": "boolean",
                    "description": "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 if the image is public.\n"
                },
                "rootVolumeId": {
                    "type": "string",
                    "description": "The ID of the snapshot of the volume to be used as root in the image.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone in which the image should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "rootVolumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceImage resources.\n",
                "properties": {
                    "additionalVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                    },
                    "additionalVolumes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceImageAdditionalVolume:InstanceImageAdditionalVolume"
                        },
                        "description": "The description of the extra volumes attached to the image.\n"
                    },
                    "architecture": {
                        "type": "string",
                        "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                    },
                    "creationDate": {
                        "type": "string",
                        "description": "Date of the image creation.\n"
                    },
                    "fromServerId": {
                        "type": "string",
                        "description": "ID of the server the image is based on (in case it is a backup).\n"
                    },
                    "modificationDate": {
                        "type": "string",
                        "description": "Date of image latest update.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the image. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the image is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project the image is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "public": {
                        "type": "boolean",
                        "description": "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 if the image is public.\n"
                    },
                    "rootVolumeId": {
                        "type": "string",
                        "description": "The ID of the snapshot of the volume to be used as root in the image.\n",
                        "willReplaceOnChanges": true
                    },
                    "rootVolumes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceImageRootVolume:InstanceImageRootVolume"
                        },
                        "description": "The description of the root volume attached to the image.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "State of the image. Possible values are: \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the image.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone in which the image should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceimage.InstanceImage has been deprecated in favor of scaleway.instance/image.Image"
        },
        "scaleway:index/instanceIp:InstanceIp": {
            "description": "Creates and manages Scaleway compute Instance IPs. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-ips-list-all-flexible-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverIp = new scaleway.instance.Ip(\"server_ip\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_ip = scaleway.instance.Ip(\"server_ip\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverIp = new Scaleway.Instance.Ip(\"server_ip\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewIp(ctx, \"server_ip\", 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.scaleway.instance.Ip;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverIp = new Ip(\"serverIp\");\n\n    }\n}\n```\n```yaml\nresources:\n  serverIp:\n    type: scaleway:instance:Ip\n    name: server_ip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPs can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceIp:InstanceIp server_ip fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP address.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the IP is associated with.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The IP Prefix.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse dns attached to this IP\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The server associated with this IP"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "address",
                "organizationId",
                "prefix",
                "projectId",
                "reverse",
                "serverId",
                "type"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceIp resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The IP address.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the IP is associated with.\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "The IP Prefix.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse dns attached to this IP\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The server associated with this IP"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the IP.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceip.InstanceIp has been deprecated in favor of scaleway.instance/ip.Ip"
        },
        "scaleway:index/instanceIpReverseDns:InstanceIpReverseDns": {
            "description": "Manages Scaleway compute Instance IPs Reverse DNS.\n\nPlease check our [guide](https://www.scaleway.com/en/docs/compute/instances/how-to/configure-reverse-dns/) for more details\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverIp = new scaleway.instance.Ip(\"server_ip\", {});\nconst tfA = new scaleway.domain.Record(\"tf_A\", {\n    dnsZone: \"scaleway.com\",\n    name: \"www\",\n    type: \"A\",\n    data: serverIp.address,\n    ttl: 3600,\n    priority: 1,\n});\nconst reverse = new scaleway.instance.IpReverseDns(\"reverse\", {\n    ipId: serverIp.id,\n    reverse: \"www.scaleway.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_ip = scaleway.instance.Ip(\"server_ip\")\ntf_a = scaleway.domain.Record(\"tf_A\",\n    dns_zone=\"scaleway.com\",\n    name=\"www\",\n    type=\"A\",\n    data=server_ip.address,\n    ttl=3600,\n    priority=1)\nreverse = scaleway.instance.IpReverseDns(\"reverse\",\n    ip_id=server_ip.id,\n    reverse=\"www.scaleway.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverIp = new Scaleway.Instance.Ip(\"server_ip\");\n\n    var tfA = new Scaleway.Domain.Record(\"tf_A\", new()\n    {\n        DnsZone = \"scaleway.com\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = serverIp.Address,\n        Ttl = 3600,\n        Priority = 1,\n    });\n\n    var reverse = new Scaleway.Instance.IpReverseDns(\"reverse\", new()\n    {\n        IpId = serverIp.Id,\n        Reverse = \"www.scaleway.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tserverIp, err := instance.NewIp(ctx, \"server_ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"tf_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"scaleway.com\"),\n\t\t\tName:     pulumi.String(\"www\"),\n\t\t\tType:     pulumi.String(\"A\"),\n\t\t\tData:     serverIp.Address,\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewIpReverseDns(ctx, \"reverse\", \u0026instance.IpReverseDnsArgs{\n\t\t\tIpId:    serverIp.ID(),\n\t\t\tReverse: pulumi.String(\"www.scaleway.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.scaleway.instance.Ip;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.instance.IpReverseDns;\nimport com.pulumi.scaleway.instance.IpReverseDnsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverIp = new Ip(\"serverIp\");\n\n        var tfA = new Record(\"tfA\", RecordArgs.builder()\n            .dnsZone(\"scaleway.com\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(serverIp.address())\n            .ttl(3600)\n            .priority(1)\n            .build());\n\n        var reverse = new IpReverseDns(\"reverse\", IpReverseDnsArgs.builder()\n            .ipId(serverIp.id())\n            .reverse(\"www.scaleway.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  serverIp:\n    type: scaleway:instance:Ip\n    name: server_ip\n  tfA:\n    type: scaleway:domain:Record\n    name: tf_A\n    properties:\n      dnsZone: scaleway.com\n      name: www\n      type: A\n      data: ${serverIp.address}\n      ttl: 3600\n      priority: 1\n  reverse:\n    type: scaleway:instance:IpReverseDns\n    properties:\n      ipId: ${serverIp.id}\n      reverse: www.scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPs reverse DNS can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceIpReverseDns:InstanceIpReverseDns reverse fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "ipId": {
                    "type": "string",
                    "description": "The IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse DNS for this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "ipId",
                "reverse"
            ],
            "inputProperties": {
                "ipId": {
                    "type": "string",
                    "description": "The IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse DNS for this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "ipId",
                "reverse"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceIpReverseDns resources.\n",
                "properties": {
                    "ipId": {
                        "type": "string",
                        "description": "The IP ID\n"
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse DNS for this IP.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceipreversedns.InstanceIpReverseDns has been deprecated in favor of scaleway.instance/ipreversedns.IpReverseDns"
        },
        "scaleway:index/instancePlacementGroup:InstancePlacementGroup": {
            "description": "Creates and manages Compute Instance Placement Groups. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-list-placement-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst availabilityGroup = new scaleway.instance.PlacementGroup(\"availability_group\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\navailability_group = scaleway.instance.PlacementGroup(\"availability_group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availabilityGroup = new Scaleway.Instance.PlacementGroup(\"availability_group\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewPlacementGroup(ctx, \"availability_group\", 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.scaleway.instance.PlacementGroup;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 availabilityGroup = new PlacementGroup(\"availabilityGroup\");\n\n    }\n}\n```\n```yaml\nresources:\n  availabilityGroup:\n    type: scaleway:instance:PlacementGroup\n    name: availability_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlacement groups can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instancePlacementGroup:InstancePlacementGroup availability_group fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the placement group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the placement group is associated with.\n"
                },
                "policyMode": {
                    "type": "string",
                    "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                },
                "policyRespected": {
                    "type": "boolean",
                    "description": "Is true when the policy is respected.\n"
                },
                "policyType": {
                    "type": "string",
                    "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the placement group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "policyRespected",
                "projectId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the placement group.\n"
                },
                "policyMode": {
                    "type": "string",
                    "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                },
                "policyType": {
                    "type": "string",
                    "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the placement group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstancePlacementGroup resources.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the placement group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the placement group is associated with.\n"
                    },
                    "policyMode": {
                        "type": "string",
                        "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                    },
                    "policyRespected": {
                        "type": "boolean",
                        "description": "Is true when the policy is respected.\n"
                    },
                    "policyType": {
                        "type": "string",
                        "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the placement group.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceplacementgroup.InstancePlacementGroup has been deprecated in favor of scaleway.instance/placementgroup.PlacementGroup"
        },
        "scaleway:index/instancePrivateNic:InstancePrivateNic": {
            "description": "Creates and manages Scaleway Instance Private NICs. For more information, see\nthe [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    serverId: \"fr-par-1/11111111-1111-1111-1111-111111111111\",\n    privateNetworkId: \"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    server_id=\"fr-par-1/11111111-1111-1111-1111-111111111111\",\n    private_network_id=\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        ServerId = \"fr-par-1/11111111-1111-1111-1111-111111111111\",\n        PrivateNetworkId = \"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tServerId:         pulumi.String(\"fr-par-1/11111111-1111-1111-1111-111111111111\"),\n\t\t\tPrivateNetworkId: pulumi.String(\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\"),\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.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .serverId(\"fr-par-1/11111111-1111-1111-1111-111111111111\")\n            .privateNetworkId(\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      serverId: fr-par-1/11111111-1111-1111-1111-111111111111\n      privateNetworkId: fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"private_network_instance\",\n    region: \"fr-par\",\n});\nconst base = new scaleway.instance.Server(\"base\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    zone: pn01.zone,\n});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    serverId: base.id,\n    privateNetworkId: pn01.id,\n    zone: pn01.zone,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"private_network_instance\",\n    region=\"fr-par\")\nbase = scaleway.instance.Server(\"base\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    zone=pn01.zone)\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    server_id=base.id,\n    private_network_id=pn01.id,\n    zone=pn01.zone)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n        Region = \"fr-par\",\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        Zone = pn01.Zone,\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        ServerId = @base.Id,\n        PrivateNetworkId = pn01.Id,\n        Zone = pn01.Zone,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:   pulumi.String(\"private_network_instance\"),\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tZone:  pn01.Zone,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tServerId:         base.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tZone:             pn01.Zone,\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .region(\"fr-par\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .zone(pn01.zone())\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .serverId(base.id())\n            .privateNetworkId(pn01.id())\n            .zone(pn01.zone())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n      region: fr-par\n  base:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      zone: ${pn01.zone}\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      serverId: ${base.id}\n      privateNetworkId: ${pn01.id}\n      zone: ${pn01.zone}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPAM IP IDs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"vpc_instance\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"private_network_instance\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.64.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\nconst server01 = new scaleway.instance.Server(\"server01\", {\n    image: \"ubuntu_focal\",\n    type: \"PLAY2-MICRO\",\n});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    privateNetworkId: pn01.id,\n    serverId: server01.id,\n    ipamIpIds: [ip01.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"vpc_instance\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"private_network_instance\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.64.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\nserver01 = scaleway.instance.Server(\"server01\",\n    image=\"ubuntu_focal\",\n    type=\"PLAY2-MICRO\")\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    private_network_id=pn01.id,\n    server_id=server01.id,\n    ipam_ip_ids=[ip01.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"vpc_instance\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.64.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n    var server01 = new Scaleway.Instance.Server(\"server01\", new()\n    {\n        Image = \"ubuntu_focal\",\n        Type = \"PLAY2-MICRO\",\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        PrivateNetworkId = pn01.Id,\n        ServerId = server01.Id,\n        IpamIpIds = new[]\n        {\n            ip01.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"vpc_instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"private_network_instance\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.64.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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\tserver01, err := instance.NewServer(ctx, \"server01\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_focal\"),\n\t\t\tType:  pulumi.String(\"PLAY2-MICRO\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tServerId:         server01.ID(),\n\t\t\tIpamIpIds: pulumi.StringArray{\n\t\t\t\tip01.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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"vpc_instance\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .address(\"172.16.64.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n        var server01 = new Server(\"server01\", ServerArgs.builder()\n            .image(\"ubuntu_focal\")\n            .type(\"PLAY2-MICRO\")\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .privateNetworkId(pn01.id())\n            .serverId(server01.id())\n            .ipamIpIds(ip01.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc_instance\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.64.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  server01:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_focal\n      type: PLAY2-MICRO\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      privateNetworkId: ${pn01.id}\n      serverId: ${server01.id}\n      ipamIpIds:\n        - ${ip01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivate NICs can be imported using the `{zone}/{server_id}/{private_nic_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instancePrivateNic:InstancePrivateNic pnic01 fr-par-1/11111111-1111-1111-1111-111111111111/22222222-2222-2222-2222-222222222222\n```\n\n",
            "properties": {
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ip list, should be for internal use only"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the private NIC.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstancePrivateNicPrivateIp:InstancePrivateNicPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network attached to.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the private NIC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n"
                }
            },
            "required": [
                "macAddress",
                "privateIps",
                "privateNetworkId",
                "serverId"
            ],
            "inputProperties": {
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ip list, should be for internal use only",
                    "willReplaceOnChanges": true
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n",
                    "willReplaceOnChanges": true
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstancePrivateNicPrivateIp:InstancePrivateNicPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network attached to.\n",
                    "willReplaceOnChanges": true
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the private NIC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "privateNetworkId",
                "serverId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstancePrivateNic resources.\n",
                "properties": {
                    "ipIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "IPAM ip list, should be for internal use only",
                        "willReplaceOnChanges": true
                    },
                    "ipamIpIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n",
                        "willReplaceOnChanges": true
                    },
                    "macAddress": {
                        "type": "string",
                        "description": "The MAC address of the private NIC.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstancePrivateNicPrivateIp:InstancePrivateNicPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the private network attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the private NIC.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceprivatenic.InstancePrivateNic has been deprecated in favor of scaleway.instance/privatenic.PrivateNic"
        },
        "scaleway:index/instanceSecurityGroup:InstanceSecurityGroup": {
            "description": "Creates and manages Scaleway compute Instance security groups. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-list-security-groups).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst allowAll = new scaleway.instance.SecurityGroup(\"allow_all\", {});\nconst web = new scaleway.instance.SecurityGroup(\"web\", {\n    inboundDefaultPolicy: \"drop\",\n    inboundRules: [\n        {\n            action: \"accept\",\n            port: 22,\n            ipRange: \"212.47.225.64/32\",\n        },\n        {\n            action: \"accept\",\n            port: 80,\n        },\n        {\n            action: \"accept\",\n            protocol: \"UDP\",\n            portRange: \"22-23\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nallow_all = scaleway.instance.SecurityGroup(\"allow_all\")\nweb = scaleway.instance.SecurityGroup(\"web\",\n    inbound_default_policy=\"drop\",\n    inbound_rules=[\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip_range\": \"212.47.225.64/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 80,\n        },\n        {\n            \"action\": \"accept\",\n            \"protocol\": \"UDP\",\n            \"port_range\": \"22-23\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var allowAll = new Scaleway.Instance.SecurityGroup(\"allow_all\");\n\n    var web = new Scaleway.Instance.SecurityGroup(\"web\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = \"212.47.225.64/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Protocol = \"UDP\",\n                PortRange = \"22-23\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSecurityGroup(ctx, \"allow_all\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSecurityGroup(ctx, \"web\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(22),\n\t\t\t\t\tIpRange: pulumi.String(\"212.47.225.64/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:    pulumi.String(\"accept\"),\n\t\t\t\t\tProtocol:  pulumi.String(\"UDP\"),\n\t\t\t\t\tPortRange: pulumi.String(\"22-23\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 allowAll = new SecurityGroup(\"allowAll\");\n\n        var web = new SecurityGroup(\"web\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ipRange(\"212.47.225.64/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(80)\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .protocol(\"UDP\")\n                    .portRange(\"22-23\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  allowAll:\n    type: scaleway:instance:SecurityGroup\n    name: allow_all\n  web:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      inboundRules:\n        - action: accept\n          port: 22\n          ipRange: 212.47.225.64/32\n        - action: accept\n          port: 80\n        - action: accept\n          protocol: UDP\n          portRange: 22-23\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Web server with banned IP and restricted internet access\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst web = new scaleway.instance.SecurityGroup(\"web\", {\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"drop\",\n    inboundRules: [\n        {\n            action: \"drop\",\n            ipRange: \"1.1.1.1/32\",\n        },\n        {\n            action: \"accept\",\n            port: 22,\n            ipRange: \"212.47.225.64/32\",\n        },\n        {\n            action: \"accept\",\n            port: 443,\n        },\n    ],\n    outboundRules: [{\n        action: \"accept\",\n        ipRange: \"8.8.8.8/32\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nweb = scaleway.instance.SecurityGroup(\"web\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"drop\",\n    inbound_rules=[\n        {\n            \"action\": \"drop\",\n            \"ip_range\": \"1.1.1.1/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip_range\": \"212.47.225.64/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 443,\n        },\n    ],\n    outbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": \"8.8.8.8/32\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new Scaleway.Instance.SecurityGroup(\"web\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"drop\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"drop\",\n                IpRange = \"1.1.1.1/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = \"212.47.225.64/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 443,\n            },\n        },\n        OutboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupOutboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = \"8.8.8.8/32\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSecurityGroup(ctx, \"web\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy:  pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"1.1.1.1/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(22),\n\t\t\t\t\tIpRange: pulumi.String(\"212.47.225.64/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: instance.SecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tIpRange: pulumi.String(\"8.8.8.8/32\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupOutboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 web = new SecurityGroup(\"web\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .outboundDefaultPolicy(\"drop\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"drop\")\n                    .ipRange(\"1.1.1.1/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ipRange(\"212.47.225.64/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(443)\n                    .build())\n            .outboundRules(SecurityGroupOutboundRuleArgs.builder()\n                .action(\"accept\")\n                .ipRange(\"8.8.8.8/32\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      outboundDefaultPolicy: drop\n      inboundRules:\n        - action: drop\n          ipRange: 1.1.1.1/32\n        - action: accept\n          port: 22\n          ipRange: 212.47.225.64/32\n        - action: accept\n          port: 443\n      outboundRules:\n        - action: accept\n          ipRange: 8.8.8.8/32\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Trusted IP for SSH access (using for_each)\n\nIf you use terraform \u003e= 0.12.6, you can leverage the \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e feature with this resource.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst trusted = [\n    \"192.168.0.1\",\n    \"192.168.0.2\",\n    \"192.168.0.3\",\n];\nconst dummy = new scaleway.instance.SecurityGroup(\"dummy\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        port: 22,\n        ipRange: entry,\n    })),\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntrusted = [\n    \"192.168.0.1\",\n    \"192.168.0.2\",\n    \"192.168.0.3\",\n]\ndummy = scaleway.instance.SecurityGroup(\"dummy\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"port\": 22,\n        \"ip_range\": entry,\n    } for entry in trusted],\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var trusted = new[]\n    {\n        \"192.168.0.1\",\n        \"192.168.0.2\",\n        \"192.168.0.3\",\n    };\n\n    var dummy = new Scaleway.Instance.SecurityGroup(\"dummy\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = entry,\n            };\n        }).ToList(),\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance security group can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceSecurityGroup:InstanceSecurityGroup web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the security group.\n"
                },
                "enableDefaultSecurity": {
                    "type": "boolean",
                    "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                },
                "externalRules": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                },
                "inboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupInboundRule:InstanceSecurityGroupInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the security group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the security group is associated with.\n"
                },
                "outboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupOutboundRule:InstanceSecurityGroupOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n"
                },
                "stateful": {
                    "type": "boolean",
                    "description": "A boolean to specify whether the security group should be stateful or not.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags of the security group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the security group.\n"
                },
                "enableDefaultSecurity": {
                    "type": "boolean",
                    "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                },
                "externalRules": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                },
                "inboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupInboundRule:InstanceSecurityGroupInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the security group.\n"
                },
                "outboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupOutboundRule:InstanceSecurityGroupOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "stateful": {
                    "type": "boolean",
                    "description": "A boolean to specify whether the security group should be stateful or not.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags of the security group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceSecurityGroup resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the security group.\n"
                    },
                    "enableDefaultSecurity": {
                        "type": "boolean",
                        "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                    },
                    "externalRules": {
                        "type": "boolean",
                        "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                    },
                    "inboundDefaultPolicy": {
                        "type": "string",
                        "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                    },
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceSecurityGroupInboundRule:InstanceSecurityGroupInboundRule"
                        },
                        "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the security group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the security group is associated with.\n"
                    },
                    "outboundDefaultPolicy": {
                        "type": "string",
                        "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceSecurityGroupOutboundRule:InstanceSecurityGroupOutboundRule"
                        },
                        "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "stateful": {
                        "type": "boolean",
                        "description": "A boolean to specify whether the security group should be stateful or not.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags of the security group.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instancesecuritygroup.InstanceSecurityGroup has been deprecated in favor of scaleway.instance/securitygroup.SecurityGroup"
        },
        "scaleway:index/instanceSecurityGroupRules:InstanceSecurityGroupRules": {
            "description": "Creates and manages Scaleway compute Instance security group rules. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-list-security-groups).\n\nThis resource can be used to externalize rules from a \u003cspan pulumi-lang-nodejs=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-dotnet=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-go=\"`instance.SecurityGroup`\" pulumi-lang-python=\"`instance.SecurityGroup`\" pulumi-lang-yaml=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-java=\"`scaleway.instance.SecurityGroup`\"\u003e`scaleway.instance.SecurityGroup`\u003c/span\u003e to solve circular dependency problems. When using this resource do not forget to set \u003cspan pulumi-lang-nodejs=\"`externalRules \" pulumi-lang-dotnet=\"`ExternalRules \" pulumi-lang-go=\"`externalRules \" pulumi-lang-python=\"`external_rules \" pulumi-lang-yaml=\"`externalRules \" pulumi-lang-java=\"`externalRules \"\u003e`externalRules \u003c/span\u003e= true` on the security group.\n\n\u003e **Warning:** In order to guaranty rules order in a given security group only one\u003cspan pulumi-lang-nodejs=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-dotnet=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-go=\" instance.SecurityGroupRules \" pulumi-lang-python=\" instance.SecurityGroupRules \" pulumi-lang-yaml=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-java=\" scaleway.instance.SecurityGroupRules \"\u003e scaleway.instance.SecurityGroupRules \u003c/span\u003eis allowed per security group.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst sg01 = new scaleway.instance.SecurityGroup(\"sg01\", {externalRules: true});\nconst sgrs01 = new scaleway.instance.SecurityGroupRules(\"sgrs01\", {\n    securityGroupId: sg01.id,\n    inboundRules: [{\n        action: \"accept\",\n        port: 80,\n        ipRange: \"0.0.0.0/0\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsg01 = scaleway.instance.SecurityGroup(\"sg01\", external_rules=True)\nsgrs01 = scaleway.instance.SecurityGroupRules(\"sgrs01\",\n    security_group_id=sg01.id,\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"port\": 80,\n        \"ip_range\": \"0.0.0.0/0\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sg01 = new Scaleway.Instance.SecurityGroup(\"sg01\", new()\n    {\n        ExternalRules = true,\n    });\n\n    var sgrs01 = new Scaleway.Instance.SecurityGroupRules(\"sgrs01\", new()\n    {\n        SecurityGroupId = sg01.Id,\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n                IpRange = \"0.0.0.0/0\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsg01, err := instance.NewSecurityGroup(ctx, \"sg01\", \u0026instance.SecurityGroupArgs{\n\t\t\tExternalRules: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSecurityGroupRules(ctx, \"sgrs01\", \u0026instance.SecurityGroupRulesArgs{\n\t\t\tSecurityGroupId: sg01.ID(),\n\t\t\tInboundRules: instance.SecurityGroupRulesInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupRulesInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(80),\n\t\t\t\t\tIpRange: pulumi.String(\"0.0.0.0/0\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.SecurityGroupRules;\nimport com.pulumi.scaleway.instance.SecurityGroupRulesArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupRulesInboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 sg01 = new SecurityGroup(\"sg01\", SecurityGroupArgs.builder()\n            .externalRules(true)\n            .build());\n\n        var sgrs01 = new SecurityGroupRules(\"sgrs01\", SecurityGroupRulesArgs.builder()\n            .securityGroupId(sg01.id())\n            .inboundRules(SecurityGroupRulesInboundRuleArgs.builder()\n                .action(\"accept\")\n                .port(80)\n                .ipRange(\"0.0.0.0/0\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sg01:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      externalRules: true\n  sgrs01:\n    type: scaleway:instance:SecurityGroupRules\n    properties:\n      securityGroupId: ${sg01.id}\n      inboundRules:\n        - action: accept\n          port: 80\n          ipRange: 0.0.0.0/0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Simplify your rules using dynamic block and \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e loop\n\nYou can use \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e syntax to simplify the definition of your rules.\nLet's suppose that your inbound default policy is to drop, but you want to build a list of exceptions to accept.\nCreate a local containing your exceptions (`locals.trusted`) and use the \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e syntax in a dynamic block:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.SecurityGroup(\"main\", {\n    description: \"test\",\n    name: \"terraform test\",\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\nconst trusted = [\n    \"1.2.3.4/32\",\n    \"4.5.6.7/32\",\n    \"7.8.9.10/24\",\n];\nconst mainSecurityGroupRules = new scaleway.instance.SecurityGroupRules(\"main\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        ipRange: entry,\n        port: 80,\n    })),\n    securityGroupId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.SecurityGroup(\"main\",\n    description=\"test\",\n    name=\"terraform test\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\ntrusted = [\n    \"1.2.3.4/32\",\n    \"4.5.6.7/32\",\n    \"7.8.9.10/24\",\n]\nmain_security_group_rules = scaleway.instance.SecurityGroupRules(\"main\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": entry,\n        \"port\": 80,\n    } for entry in trusted],\n    security_group_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.SecurityGroup(\"main\", new()\n    {\n        Description = \"test\",\n        Name = \"terraform test\",\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n    var trusted = new[]\n    {\n        \"1.2.3.4/32\",\n        \"4.5.6.7/32\",\n        \"7.8.9.10/24\",\n    };\n\n    var mainSecurityGroupRules = new Scaleway.Instance.SecurityGroupRules(\"main\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = entry,\n                Port = 80,\n            };\n        }).ToList(),\n        SecurityGroupId = main.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also use object to assign IP and port in the same time.\nIn your locals, you can use objects to encapsulate several values that will be used later on in the loop:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.SecurityGroup(\"main\", {\n    description: \"test\",\n    name: \"terraform test\",\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\nconst trusted = [\n    {\n        ipRange: \"1.2.3.4/32\",\n        port: \"80\",\n    },\n    {\n        ipRange: \"5.6.7.8/32\",\n        port: \"81\",\n    },\n    {\n        ipRange: \"9.10.11.12/32\",\n        port: \"81\",\n    },\n];\nconst mainSecurityGroupRules = new scaleway.instance.SecurityGroupRules(\"main\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        ipRange: entry.ipRange,\n        port: Number(entry.port),\n    })),\n    securityGroupId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.SecurityGroup(\"main\",\n    description=\"test\",\n    name=\"terraform test\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\ntrusted = [\n    {\n        \"ipRange\": \"1.2.3.4/32\",\n        \"port\": \"80\",\n    },\n    {\n        \"ipRange\": \"5.6.7.8/32\",\n        \"port\": \"81\",\n    },\n    {\n        \"ipRange\": \"9.10.11.12/32\",\n        \"port\": \"81\",\n    },\n]\nmain_security_group_rules = scaleway.instance.SecurityGroupRules(\"main\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": entry[\"ipRange\"],\n        \"port\": int(entry[\"port\"]),\n    } for entry in trusted],\n    security_group_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.SecurityGroup(\"main\", new()\n    {\n        Description = \"test\",\n        Name = \"terraform test\",\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n    var trusted = new[]\n    {\n        \n        {\n            { \"ipRange\", \"1.2.3.4/32\" },\n            { \"port\", \"80\" },\n        },\n        \n        {\n            { \"ipRange\", \"5.6.7.8/32\" },\n            { \"port\", \"81\" },\n        },\n        \n        {\n            { \"ipRange\", \"9.10.11.12/32\" },\n            { \"port\", \"81\" },\n        },\n    };\n\n    var mainSecurityGroupRules = new Scaleway.Instance.SecurityGroupRules(\"main\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = entry.IpRange,\n                Port = entry.Port,\n            };\n        }).ToList(),\n        SecurityGroupId = main.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance security group rules can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceSecurityGroupRules:InstanceSecurityGroupRules web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesInboundRule:InstanceSecurityGroupRulesInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesOutboundRule:InstanceSecurityGroupRulesOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group.\n"
                }
            },
            "required": [
                "securityGroupId"
            ],
            "inputProperties": {
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesInboundRule:InstanceSecurityGroupRulesInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesOutboundRule:InstanceSecurityGroupRulesOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "securityGroupId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceSecurityGroupRules resources.\n",
                "properties": {
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesInboundRule:InstanceSecurityGroupRulesInboundRule"
                        },
                        "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceSecurityGroupRulesOutboundRule:InstanceSecurityGroupRulesOutboundRule"
                        },
                        "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The ID of the security group.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instancesecuritygrouprules.InstanceSecurityGroupRules has been deprecated in favor of scaleway.instance/securitygrouprules.SecurityGroupRules"
        },
        "scaleway:index/instanceServer:InstanceServer": {
            "description": "Creates and manages Scaleway compute Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).\n\nPlease check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst publicIp = new scaleway.instance.Ip(\"public_ip\", {});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    ipId: publicIp.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npublic_ip = scaleway.instance.Ip(\"public_ip\")\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    ip_id=public_ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var publicIp = new Scaleway.Instance.Ip(\"public_ip\");\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        IpId = publicIp.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublicIp, err := instance.NewIp(ctx, \"public_ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tIpId:  publicIp.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.pulumi.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 publicIp = new Ip(\"publicIp\");\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .ipId(publicIp.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  publicIp:\n    type: scaleway:instance:Ip\n    name: public_ip\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      ipId: ${publicIp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes and tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst data = new scaleway.block.Volume(\"data\", {\n    sizeInGb: 100,\n    iops: 5000,\n});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    tags: [\n        \"hello\",\n        \"public\",\n    ],\n    rootVolume: {\n        deleteOnTermination: false,\n    },\n    additionalVolumeIds: [data.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndata = scaleway.block.Volume(\"data\",\n    size_in_gb=100,\n    iops=5000)\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    tags=[\n        \"hello\",\n        \"public\",\n    ],\n    root_volume={\n        \"delete_on_termination\": False,\n    },\n    additional_volume_ids=[data.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var data = new Scaleway.Block.Volume(\"data\", new()\n    {\n        SizeInGb = 100,\n        Iops = 5000,\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        Tags = new[]\n        {\n            \"hello\",\n            \"public\",\n        },\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            DeleteOnTermination = false,\n        },\n        AdditionalVolumeIds = new[]\n        {\n            data.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdata, err := block.NewVolume(ctx, \"data\", \u0026block.VolumeArgs{\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\tIops:     pulumi.Int(5000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tDeleteOnTermination: pulumi.Bool(false),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tdata.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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 data = new Volume(\"data\", VolumeArgs.builder()\n            .sizeInGb(100)\n            .iops(5000)\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .tags(            \n                \"hello\",\n                \"public\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .deleteOnTermination(false)\n                .build())\n            .additionalVolumeIds(data.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  data:\n    type: scaleway:block:Volume\n    properties:\n      sizeInGb: 100\n      iops: 5000\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      tags:\n        - hello\n        - public\n      rootVolume:\n        deleteOnTermination: false\n      additionalVolumeIds:\n        - ${data.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With filesystem\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst volume = new scaleway.block.Volume(\"volume\", {\n    iops: 15000,\n    sizeInGb: 15,\n});\nconst terraformInstanceFilesystem = new scaleway.FileFilesystem(\"terraform_instance_filesystem\", {\n    name: \"filesystem-instance-terraform\",\n    sizeInGb: 100,\n});\nconst base = new scaleway.instance.Server(\"base\", {\n    type: \"POP2-HM-2C-16G\",\n    state: \"started\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_instance_server\",\n        \"state\",\n    ],\n    rootVolume: {\n        volumeType: \"sbs_volume\",\n        volumeId: volume.id,\n    },\n    filesystems: [{\n        filesystemId: terraformInstanceFilesystem.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvolume = scaleway.block.Volume(\"volume\",\n    iops=15000,\n    size_in_gb=15)\nterraform_instance_filesystem = scaleway.FileFilesystem(\"terraform_instance_filesystem\",\n    name=\"filesystem-instance-terraform\",\n    size_in_gb=100)\nbase = scaleway.instance.Server(\"base\",\n    type=\"POP2-HM-2C-16G\",\n    state=\"started\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_instance_server\",\n        \"state\",\n    ],\n    root_volume={\n        \"volume_type\": \"sbs_volume\",\n        \"volume_id\": volume.id,\n    },\n    filesystems=[{\n        \"filesystem_id\": terraform_instance_filesystem.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume = new Scaleway.Block.Volume(\"volume\", new()\n    {\n        Iops = 15000,\n        SizeInGb = 15,\n    });\n\n    var terraformInstanceFilesystem = new Scaleway.FileFilesystem(\"terraform_instance_filesystem\", new()\n    {\n        Name = \"filesystem-instance-terraform\",\n        SizeInGb = 100,\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Type = \"POP2-HM-2C-16G\",\n        State = \"started\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_instance_server\",\n            \"state\",\n        },\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeType = \"sbs_volume\",\n            VolumeId = volume.Id,\n        },\n        Filesystems = new[]\n        {\n            new Scaleway.Instance.Inputs.ServerFilesystemArgs\n            {\n                FilesystemId = terraformInstanceFilesystem.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume, err := block.NewVolume(ctx, \"volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(15000),\n\t\t\tSizeInGb: pulumi.Int(15),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tterraformInstanceFilesystem, err := scaleway.NewFileFilesystem(ctx, \"terraform_instance_filesystem\", \u0026scaleway.FileFilesystemArgs{\n\t\t\tName:     pulumi.String(\"filesystem-instance-terraform\"),\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"POP2-HM-2C-16G\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_instance_server\"),\n\t\t\t\tpulumi.String(\"state\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\n\t\t\t\tVolumeId:   volume.ID(),\n\t\t\t},\n\t\t\tFilesystems: instance.ServerFilesystemArray{\n\t\t\t\t\u0026instance.ServerFilesystemArgs{\n\t\t\t\t\tFilesystemId: terraformInstanceFilesystem.ID(),\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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.FileFilesystem;\nimport com.pulumi.scaleway.FileFilesystemArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerFilesystemArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume = new Volume(\"volume\", VolumeArgs.builder()\n            .iops(15000)\n            .sizeInGb(15)\n            .build());\n\n        var terraformInstanceFilesystem = new FileFilesystem(\"terraformInstanceFilesystem\", FileFilesystemArgs.builder()\n            .name(\"filesystem-instance-terraform\")\n            .sizeInGb(100)\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .type(\"POP2-HM-2C-16G\")\n            .state(\"started\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_instance_server\",\n                \"state\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeType(\"sbs_volume\")\n                .volumeId(volume.id())\n                .build())\n            .filesystems(ServerFilesystemArgs.builder()\n                .filesystemId(terraformInstanceFilesystem.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume:\n    type: scaleway:block:Volume\n    properties:\n      iops: 15000\n      sizeInGb: 15\n  terraformInstanceFilesystem:\n    type: scaleway:FileFilesystem\n    name: terraform_instance_filesystem\n    properties:\n      name: filesystem-instance-terraform\n      sizeInGb: 100\n  base:\n    type: scaleway:instance:Server\n    properties:\n      type: POP2-HM-2C-16G\n      state: started\n      tags:\n        - terraform-test\n        - scaleway_instance_server\n        - state\n      rootVolume:\n        volumeType: sbs_volume\n        volumeId: ${volume.id}\n      filesystems:\n        - filesystemId: ${terraformInstanceFilesystem.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a reserved IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.instance.Ip(\"ip\", {});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n    tags: [\n        \"hello\",\n        \"public\",\n    ],\n    ipId: ip.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.instance.Ip(\"ip\")\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"f974feac-abae-4365-b988-8ec7d1cec10d\",\n    tags=[\n        \"hello\",\n        \"public\",\n    ],\n    ip_id=ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip = new Scaleway.Instance.Ip(\"ip\");\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n        Tags = new[]\n        {\n            \"hello\",\n            \"public\",\n        },\n        IpId = ip.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip, err := instance.NewIp(ctx, \"ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"f974feac-abae-4365-b988-8ec7d1cec10d\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tIpId: ip.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.pulumi.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip = new Ip(\"ip\");\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"f974feac-abae-4365-b988-8ec7d1cec10d\")\n            .tags(            \n                \"hello\",\n                \"public\")\n            .ipId(ip.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip:\n    type: scaleway:instance:Ip\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: f974feac-abae-4365-b988-8ec7d1cec10d\n      tags:\n        - hello\n        - public\n      ipId: ${ip.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With security group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.instance.SecurityGroup(\"www\", {\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n    inboundRules: [\n        {\n            action: \"accept\",\n            port: 22,\n            ip: \"212.47.225.64\",\n        },\n        {\n            action: \"accept\",\n            port: 80,\n        },\n        {\n            action: \"accept\",\n            port: 443,\n        },\n    ],\n    outboundRules: [{\n        action: \"drop\",\n        ipRange: \"10.20.0.0/24\",\n    }],\n});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    securityGroupId: www.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.instance.SecurityGroup(\"www\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\",\n    inbound_rules=[\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip\": \"212.47.225.64\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 80,\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 443,\n        },\n    ],\n    outbound_rules=[{\n        \"action\": \"drop\",\n        \"ip_range\": \"10.20.0.0/24\",\n    }])\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    security_group_id=www.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var www = new Scaleway.Instance.SecurityGroup(\"www\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                Ip = \"212.47.225.64\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 443,\n            },\n        },\n        OutboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupOutboundRuleArgs\n            {\n                Action = \"drop\",\n                IpRange = \"10.20.0.0/24\",\n            },\n        },\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        SecurityGroupId = www.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twww, err := instance.NewSecurityGroup(ctx, \"www\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy:  pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"accept\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(22),\n\t\t\t\t\tIp:     pulumi.String(\"212.47.225.64\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: instance.SecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"10.20.0.0/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 = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:            pulumi.String(\"DEV1-S\"),\n\t\t\tImage:           pulumi.String(\"ubuntu_jammy\"),\n\t\t\tSecurityGroupId: www.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.pulumi.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupOutboundRuleArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 www = new SecurityGroup(\"www\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .outboundDefaultPolicy(\"accept\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ip(\"212.47.225.64\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(80)\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(443)\n                    .build())\n            .outboundRules(SecurityGroupOutboundRuleArgs.builder()\n                .action(\"drop\")\n                .ipRange(\"10.20.0.0/24\")\n                .build())\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .securityGroupId(www.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  www:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      outboundDefaultPolicy: accept\n      inboundRules:\n        - action: accept\n          port: '22'\n          ip: 212.47.225.64\n        - action: accept\n          port: '80'\n        - action: accept\n          port: '443'\n      outboundRules:\n        - action: drop\n          ipRange: 10.20.0.0/24\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      securityGroupId: ${www.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {name: \"private_network_instance\"});\nconst base = new scaleway.instance.Server(\"base\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    privateNetworks: [{\n        pnId: pn01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.network.PrivateNetwork(\"pn01\", name=\"private_network_instance\")\nbase = scaleway.instance.Server(\"base\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    private_networks=[{\n        \"pn_id\": pn01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Instance.Inputs.ServerPrivateNetworkArgs\n            {\n                PnId = pn01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"private_network_instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tPrivateNetworks: instance.ServerPrivateNetworkArray{\n\t\t\t\t\u0026instance.ServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: pn01.ID(),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .pnId(pn01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n  base:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      privateNetworks:\n        - pnId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Root volume configuration\n\n### Resized block volume with installed image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst image = new scaleway.instance.Server(\"image\", {\n    type: \"PRO2-XXS\",\n    image: \"ubuntu_jammy\",\n    rootVolume: {\n        sizeInGb: 100,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nimage = scaleway.instance.Server(\"image\",\n    type=\"PRO2-XXS\",\n    image=\"ubuntu_jammy\",\n    root_volume={\n        \"size_in_gb\": 100,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var image = new Scaleway.Instance.Server(\"image\", new()\n    {\n        Type = \"PRO2-XXS\",\n        Image = \"ubuntu_jammy\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 100,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"image\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"PRO2-XXS\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(100),\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 image = new Server(\"image\", ServerArgs.builder()\n            .type(\"PRO2-XXS\")\n            .image(\"ubuntu_jammy\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(100)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  image:\n    type: scaleway:instance:Server\n    properties:\n      type: PRO2-XXS\n      image: ubuntu_jammy\n      rootVolume:\n        sizeInGb: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshot = scaleway.block.getSnapshot({\n    name: \"my_snapshot\",\n});\nconst fromSnapshot = new scaleway.block.Volume(\"from_snapshot\", {\n    snapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n    iops: 5000,\n});\nconst fromSnapshotServer = new scaleway.instance.Server(\"from_snapshot\", {\n    type: \"PRO2-XXS\",\n    rootVolume: {\n        volumeId: fromSnapshot.id,\n        volumeType: \"sbs_volume\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nsnapshot = scaleway.block.get_snapshot(name=\"my_snapshot\")\nfrom_snapshot = scaleway.block.Volume(\"from_snapshot\",\n    snapshot_id=snapshot.id,\n    iops=5000)\nfrom_snapshot_server = scaleway.instance.Server(\"from_snapshot\",\n    type=\"PRO2-XXS\",\n    root_volume={\n        \"volume_id\": from_snapshot.id,\n        \"volume_type\": \"sbs_volume\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = Scaleway.Block.GetSnapshot.Invoke(new()\n    {\n        Name = \"my_snapshot\",\n    });\n\n    var fromSnapshot = new Scaleway.Block.Volume(\"from_snapshot\", new()\n    {\n        SnapshotId = snapshot.Apply(getSnapshotResult =\u003e getSnapshotResult.Id),\n        Iops = 5000,\n    });\n\n    var fromSnapshotServer = new Scaleway.Instance.Server(\"from_snapshot\", new()\n    {\n        Type = \"PRO2-XXS\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeId = fromSnapshot.Id,\n            VolumeType = \"sbs_volume\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := block.LookupSnapshot(ctx, \u0026block.LookupSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my_snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfromSnapshot, err := block.NewVolume(ctx, \"from_snapshot\", \u0026block.VolumeArgs{\n\t\t\tSnapshotId: pulumi.String(pulumi.String(snapshot.Id)),\n\t\t\tIops:       pulumi.Int(5000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"from_snapshot\", \u0026instance.ServerArgs{\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeId:   fromSnapshot.ID(),\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\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.scaleway.block.BlockFunctions;\nimport com.pulumi.scaleway.block.inputs.GetSnapshotArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshot = BlockFunctions.getSnapshot(GetSnapshotArgs.builder()\n            .name(\"my_snapshot\")\n            .build());\n\n        var fromSnapshot = new Volume(\"fromSnapshot\", VolumeArgs.builder()\n            .snapshotId(snapshot.id())\n            .iops(5000)\n            .build());\n\n        var fromSnapshotServer = new Server(\"fromSnapshotServer\", ServerArgs.builder()\n            .type(\"PRO2-XXS\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeId(fromSnapshot.id())\n                .volumeType(\"sbs_volume\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fromSnapshot:\n    type: scaleway:block:Volume\n    name: from_snapshot\n    properties:\n      snapshotId: ${snapshot.id}\n      iops: 5000\n  fromSnapshotServer:\n    type: scaleway:instance:Server\n    name: from_snapshot\n    properties:\n      type: PRO2-XXS\n      rootVolume:\n        volumeId: ${fromSnapshot.id}\n        volumeType: sbs_volume\nvariables:\n  snapshot:\n    fn::invoke:\n      function: scaleway:block:getSnapshot\n      arguments:\n        name: my_snapshot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using Scaleway Block Storage (SBS) volume\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    type: \"PLAY2-MICRO\",\n    image: \"ubuntu_jammy\",\n    rootVolume: {\n        volumeType: \"sbs_volume\",\n        sbsIops: 15000,\n        sizeInGb: 50,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    type=\"PLAY2-MICRO\",\n    image=\"ubuntu_jammy\",\n    root_volume={\n        \"volume_type\": \"sbs_volume\",\n        \"sbs_iops\": 15000,\n        \"size_in_gb\": 50,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Type = \"PLAY2-MICRO\",\n        Image = \"ubuntu_jammy\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeType = \"sbs_volume\",\n            SbsIops = 15000,\n            SizeInGb = 50,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"PLAY2-MICRO\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\n\t\t\t\tSbsIops:    pulumi.Int(15000),\n\t\t\t\tSizeInGb:   pulumi.Int(50),\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .type(\"PLAY2-MICRO\")\n            .image(\"ubuntu_jammy\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeType(\"sbs_volume\")\n                .sbsIops(15000)\n                .sizeInGb(50)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      type: PLAY2-MICRO\n      image: ubuntu_jammy\n      rootVolume:\n        volumeType: sbs_volume\n        sbsIops: 15000\n        sizeInGb: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Private Network\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e will recreate a new private network interface.\n\n- \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e - (Required) The private network ID where to connect.\n- \u003cspan pulumi-lang-nodejs=\"`macAddress`\" pulumi-lang-dotnet=\"`MacAddress`\" pulumi-lang-go=\"`macAddress`\" pulumi-lang-python=\"`mac_address`\" pulumi-lang-yaml=\"`macAddress`\" pulumi-lang-java=\"`macAddress`\"\u003e`macAddress`\u003c/span\u003e The private NIC MAC address.\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 private NIC state.\n- \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e - (Defaults to provider \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n\n\u003e **Important:** You can only attach an instance in the same zone as a private network.\n\u003e **Important:** Instance supports a maximum of 8 different private networks.\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceServer:InstanceServer web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                },
                "adminPasswordEncryptionSshKeyId": {
                    "type": "string",
                    "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                },
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                    "deprecationMessage": "bootscript is not supported anymore."
                },
                "cloudInit": {
                    "type": "string",
                    "description": "The cloud init script associated with this server"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "filesystems": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerFilesystem:InstanceServerFilesystem"
                    },
                    "description": "List of filesystems attached to the server.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "The ID of the reserved IP that is attached to the server.\n"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                },
                "placementGroupPolicyRespected": {
                    "type": "boolean",
                    "description": "(Deprecated) Always false, use\u003cspan pulumi-lang-nodejs=\" instancePlacementGroup \" pulumi-lang-dotnet=\" InstancePlacementGroup \" pulumi-lang-go=\" instancePlacementGroup \" pulumi-lang-python=\" instance_placement_group \" pulumi-lang-yaml=\" instancePlacementGroup \" pulumi-lang-java=\" instancePlacementGroup \"\u003e instancePlacementGroup \u003c/span\u003eresource to known when the placement group policy is respected.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPrivateIp:InstanceServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPrivateNetwork:InstanceServerPrivateNetwork"
                    },
                    "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPublicIp:InstanceServerPublicIp"
                    },
                    "description": "The list of public IPs of the server.\n"
                },
                "replaceOnTypeChange": {
                    "type": "boolean",
                    "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                },
                "rootVolume": {
                    "$ref": "#/types/scaleway:index/InstanceServerRootVolume:InstanceServerRootVolume",
                    "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                },
                "userData": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n"
                }
            },
            "required": [
                "bootscriptId",
                "cloudInit",
                "filesystems",
                "name",
                "organizationId",
                "placementGroupPolicyRespected",
                "privateIps",
                "projectId",
                "publicIps",
                "rootVolume",
                "securityGroupId",
                "state",
                "type",
                "userData"
            ],
            "inputProperties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                },
                "adminPasswordEncryptionSshKeyId": {
                    "type": "string",
                    "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                },
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                    "deprecationMessage": "bootscript is not supported anymore."
                },
                "cloudInit": {
                    "type": "string",
                    "description": "The cloud init script associated with this server"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "filesystems": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerFilesystem:InstanceServerFilesystem"
                    },
                    "description": "List of filesystems attached to the server.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "The ID of the reserved IP that is attached to the server.\n"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPrivateIp:InstanceServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPrivateNetwork:InstanceServerPrivateNetwork"
                    },
                    "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/InstanceServerPublicIp:InstanceServerPublicIp"
                    },
                    "description": "The list of public IPs of the server.\n"
                },
                "replaceOnTypeChange": {
                    "type": "boolean",
                    "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                },
                "rootVolume": {
                    "$ref": "#/types/scaleway:index/InstanceServerRootVolume:InstanceServerRootVolume",
                    "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                },
                "userData": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceServer resources.\n",
                "properties": {
                    "additionalVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                    },
                    "adminPasswordEncryptionSshKeyId": {
                        "type": "string",
                        "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                    },
                    "bootType": {
                        "type": "string",
                        "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                    },
                    "bootscriptId": {
                        "type": "string",
                        "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                        "deprecationMessage": "bootscript is not supported anymore."
                    },
                    "cloudInit": {
                        "type": "string",
                        "description": "The cloud init script associated with this server"
                    },
                    "enableDynamicIp": {
                        "type": "boolean",
                        "description": "If true a dynamic IP will be attached to the server.\n"
                    },
                    "filesystems": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceServerFilesystem:InstanceServerFilesystem"
                        },
                        "description": "List of filesystems attached to the server.\n"
                    },
                    "image": {
                        "type": "string",
                        "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                    },
                    "ipId": {
                        "type": "string",
                        "description": "The ID of the reserved IP that is attached to the server.\n"
                    },
                    "ipIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "placementGroupId": {
                        "type": "string",
                        "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                    },
                    "placementGroupPolicyRespected": {
                        "type": "boolean",
                        "description": "(Deprecated) Always false, use\u003cspan pulumi-lang-nodejs=\" instancePlacementGroup \" pulumi-lang-dotnet=\" InstancePlacementGroup \" pulumi-lang-go=\" instancePlacementGroup \" pulumi-lang-python=\" instance_placement_group \" pulumi-lang-yaml=\" instancePlacementGroup \" pulumi-lang-java=\" instancePlacementGroup \"\u003e instancePlacementGroup \u003c/span\u003eresource to known when the placement group policy is respected.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceServerPrivateIp:InstanceServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceServerPrivateNetwork:InstanceServerPrivateNetwork"
                        },
                        "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Set to true to activate server protection option.\n"
                    },
                    "publicIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/InstanceServerPublicIp:InstanceServerPublicIp"
                        },
                        "description": "The list of public IPs of the server.\n"
                    },
                    "replaceOnTypeChange": {
                        "type": "boolean",
                        "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                    },
                    "rootVolume": {
                        "$ref": "#/types/scaleway:index/InstanceServerRootVolume:InstanceServerRootVolume",
                        "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the server.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                    },
                    "userData": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceserver.InstanceServer has been deprecated in favor of scaleway.instance/server.Server"
        },
        "scaleway:index/instanceSnapshot:InstanceSnapshot": {
            "description": "Creates and manages Scaleway Compute Snapshots.\nFor more information,\nsee the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-snapshots-list-snapshots).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.Snapshot(\"main\", {\n    name: \"some-snapshot-name\",\n    volumeId: \"11111111-1111-1111-1111-111111111111\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.Snapshot(\"main\",\n    name=\"some-snapshot-name\",\n    volume_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.Snapshot(\"main\", new()\n    {\n        Name = \"some-snapshot-name\",\n        VolumeId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSnapshot(ctx, \"main\", \u0026instance.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"some-snapshot-name\"),\n\t\t\tVolumeId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Snapshot(\"main\", SnapshotArgs.builder()\n            .name(\"some-snapshot-name\")\n            .volumeId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:instance:Snapshot\n    properties:\n      name: some-snapshot-name\n      volumeId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Unified type snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.Volume(\"main\", {\n    type: \"l_ssd\",\n    sizeInGb: 10,\n});\nconst mainServer = new scaleway.instance.Server(\"main\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    rootVolume: {\n        sizeInGb: 10,\n        volumeType: \"l_ssd\",\n    },\n    additionalVolumeIds: [main.id],\n});\nconst mainSnapshot = new scaleway.instance.Snapshot(\"main\", {volumeId: main.id}, {\n    dependsOn: [mainServer],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.Volume(\"main\",\n    type=\"l_ssd\",\n    size_in_gb=10)\nmain_server = scaleway.instance.Server(\"main\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    root_volume={\n        \"size_in_gb\": 10,\n        \"volume_type\": \"l_ssd\",\n    },\n    additional_volume_ids=[main.id])\nmain_snapshot = scaleway.instance.Snapshot(\"main\", volume_id=main.id,\nopts = pulumi.ResourceOptions(depends_on=[main_server]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.Volume(\"main\", new()\n    {\n        Type = \"l_ssd\",\n        SizeInGb = 10,\n    });\n\n    var mainServer = new Scaleway.Instance.Server(\"main\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 10,\n            VolumeType = \"l_ssd\",\n        },\n        AdditionalVolumeIds = new[]\n        {\n            main.Id,\n        },\n    });\n\n    var mainSnapshot = new Scaleway.Instance.Snapshot(\"main\", new()\n    {\n        VolumeId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainServer,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := instance.NewVolume(ctx, \"main\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"l_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainServer, err := instance.NewServer(ctx, \"main\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb:   pulumi.Int(10),\n\t\t\t\tVolumeType: pulumi.String(\"l_ssd\"),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tmain.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 = instance.NewSnapshot(ctx, \"main\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: main.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainServer,\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.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Volume(\"main\", VolumeArgs.builder()\n            .type(\"l_ssd\")\n            .sizeInGb(10)\n            .build());\n\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(10)\n                .volumeType(\"l_ssd\")\n                .build())\n            .additionalVolumeIds(main.id())\n            .build());\n\n        var mainSnapshot = new Snapshot(\"mainSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(mainServer)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:instance:Volume\n    properties:\n      type: l_ssd\n      sizeInGb: 10\n  mainServer:\n    type: scaleway:instance:Server\n    name: main\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      rootVolume:\n        sizeInGb: 10\n        volumeType: l_ssd\n      additionalVolumeIds:\n        - ${main.id}\n  mainSnapshot:\n    type: scaleway:instance:Snapshot\n    name: main\n    properties:\n      volumeId: ${main.id}\n    options:\n      dependsOn:\n        - ${mainServer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example importing a local qcow2 file\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst bucket = new scaleway.object.Bucket(\"bucket\", {name: \"snapshot-qcow-import\"});\nconst qcow = new scaleway.object.Item(\"qcow\", {\n    bucket: bucket.name,\n    key: \"server.qcow2\",\n    file: \"myqcow.qcow2\",\n});\nconst snapshot = new scaleway.instance.Snapshot(\"snapshot\", {\"import\": {\n    bucket: qcow.bucket,\n    key: qcow.key,\n}});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbucket = scaleway.object.Bucket(\"bucket\", name=\"snapshot-qcow-import\")\nqcow = scaleway.object.Item(\"qcow\",\n    bucket=bucket.name,\n    key=\"server.qcow2\",\n    file=\"myqcow.qcow2\")\nsnapshot = scaleway.instance.Snapshot(\"snapshot\", import_={\n    \"bucket\": qcow.bucket,\n    \"key\": qcow.key,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bucket = new Scaleway.Object.Bucket(\"bucket\", new()\n    {\n        Name = \"snapshot-qcow-import\",\n    });\n\n    var qcow = new Scaleway.Object.Item(\"qcow\", new()\n    {\n        Bucket = bucket.Name,\n        Key = \"server.qcow2\",\n        File = \"myqcow.qcow2\",\n    });\n\n    var snapshot = new Scaleway.Instance.Snapshot(\"snapshot\", new()\n    {\n        Import = new Scaleway.Instance.Inputs.SnapshotImportArgs\n        {\n            Bucket = qcow.Bucket,\n            Key = qcow.Key,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := object.NewBucket(ctx, \"bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-qcow-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqcow, err := object.NewItem(ctx, \"qcow\", \u0026object.ItemArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tKey:    pulumi.String(\"server.qcow2\"),\n\t\t\tFile:   pulumi.String(\"myqcow.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSnapshot(ctx, \"snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tImport: \u0026instance.SnapshotImportArgs{\n\t\t\t\tBucket: qcow.Bucket,\n\t\t\t\tKey:    qcow.Key,\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.inputs.SnapshotImportArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 bucket = new Bucket(\"bucket\", BucketArgs.builder()\n            .name(\"snapshot-qcow-import\")\n            .build());\n\n        var qcow = new Item(\"qcow\", ItemArgs.builder()\n            .bucket(bucket.name())\n            .key(\"server.qcow2\")\n            .file(\"myqcow.qcow2\")\n            .build());\n\n        var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n            .import_(SnapshotImportArgs.builder()\n                .bucket(qcow.bucket())\n                .key(qcow.key())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-qcow-import\n  qcow:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${bucket.name}\n      key: server.qcow2\n      file: myqcow.qcow2\n  snapshot:\n    type: scaleway:instance:Snapshot\n    properties:\n      import:\n        bucket: ${qcow.bucket}\n        key: ${qcow.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshots can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceSnapshot:InstanceSnapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The snapshot creation time.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:index/InstanceSnapshotImport:InstanceSnapshotImport",
                    "description": "Import a snapshot from a qcow2 file located in a bucket\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the snapshot is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "(Optional) The size of the snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "projectId",
                "sizeInGb",
                "type"
            ],
            "inputProperties": {
                "import": {
                    "$ref": "#/types/scaleway:index/InstanceSnapshotImport:InstanceSnapshotImport",
                    "description": "Import a snapshot from a qcow2 file located in a bucket\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The snapshot creation time.\n"
                    },
                    "import": {
                        "$ref": "#/types/scaleway:index/InstanceSnapshotImport:InstanceSnapshotImport",
                        "description": "Import a snapshot from a qcow2 file located in a bucket\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the snapshot is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "(Optional) The size of the snapshot.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the snapshot.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "The ID of the volume to take a snapshot from.\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instancesnapshot.InstanceSnapshot has been deprecated in favor of scaleway.instance/snapshot.Snapshot"
        },
        "scaleway:index/instanceUserData:InstanceUserData": {
            "description": "Creates and manages Scaleway compute Instance User Data values.\n\nUser data is a key value store API you can use to provide data from and to your server without authentication. It is the mechanism by which a user can pass information contained in a local file to an Instance at launch time.\n\nThe typical use case is to pass something like a shell script or a configuration file as user data.\n\nFor more information about \u003cspan pulumi-lang-nodejs=\"[userData]\" pulumi-lang-dotnet=\"[UserData]\" pulumi-lang-go=\"[userData]\" pulumi-lang-python=\"[user_data]\" pulumi-lang-yaml=\"[userData]\" pulumi-lang-java=\"[userData]\"\u003e[userData]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-user-data-list-user-data) check [our documentation guide](https://www.scaleway.com/en/docs/compute/instances/how-to/use-boot-modes/#how-to-use-cloud-init).\n\nAbout cloud-init documentation please check [the official documentation](https://cloudinit.readthedocs.io/en/latest/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst userData = config.getObject\u003cRecord\u003cstring, any\u003e\u003e(\"userData\") || {\n    \"cloud-init\": `#cloud-config\napt-update: true\napt-upgrade: true\n`,\n    foo: \"bar\",\n};\nconst mainServer = new scaleway.instance.Server(\"main\", {\n    image: \"ubuntu_focal\",\n    type: \"DEV1-S\",\n});\n// User data with a single value\nconst main = new scaleway.instance.UserData(\"main\", {\n    serverId: mainServer.id,\n    key: \"foo\",\n    value: \"bar\",\n});\n// User Data with many keys.\nconst data: scaleway.instance.UserData[] = [];\nfor (const range of Object.entries(userData).sort().map(([k, v]) =\u003e ({key: k, value: v}))) {\n    data.push(new scaleway.instance.UserData(`data-${range.key}`, {\n        serverId: mainServer.id,\n        key: range.key,\n        value: range.value,\n    }));\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\nuser_data = config.get_object(\"userData\")\nif user_data is None:\n    user_data = {\n        \"cloud-init\": \"\"\"#cloud-config\napt-update: true\napt-upgrade: true\n\"\"\",\n        \"foo\": \"bar\",\n    }\nmain_server = scaleway.instance.Server(\"main\",\n    image=\"ubuntu_focal\",\n    type=\"DEV1-S\")\n# User data with a single value\nmain = scaleway.instance.UserData(\"main\",\n    server_id=main_server.id,\n    key=\"foo\",\n    value=\"bar\")\n# User Data with many keys.\ndata: list[Any] = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in sorted((user_data).items())]:\n    data.append(scaleway.instance.UserData(f\"data-{range['key']}\",\n        server_id=main_server.id,\n        key=range[\"key\"],\n        value=range[\"value\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var userData = config.GetObject\u003cDictionary\u003cstring, dynamic\u003e\u003e(\"userData\") ?? \n    {\n        { \"cloud-init\", @\"#cloud-config\napt-update: true\napt-upgrade: true\n\" },\n        { \"foo\", \"bar\" },\n    };\n    var mainServer = new Scaleway.Instance.Server(\"main\", new()\n    {\n        Image = \"ubuntu_focal\",\n        Type = \"DEV1-S\",\n    });\n\n    // User data with a single value\n    var main = new Scaleway.Instance.UserData(\"main\", new()\n    {\n        ServerId = mainServer.Id,\n        Key = \"foo\",\n        Value = \"bar\",\n    });\n\n    // User Data with many keys.\n    var data = new List\u003cScaleway.Instance.UserData\u003e();\n    foreach (var range in userData.Select(pair =\u003e new { pair.Key, pair.Value }))\n    {\n        data.Add(new Scaleway.Instance.UserData($\"data-{range.Key}\", new()\n        {\n            ServerId = mainServer.Id,\n            Key = range.Key,\n            Value = range.Value,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tuserData := map[string]interface{}{\n\t\t\t\"cloud-init\": \"#cloud-config\\napt-update: true\\napt-upgrade: true\\n\",\n\t\t\t\"foo\":        \"bar\",\n\t\t}\n\t\tif param := cfg.GetObject(\"userData\"); param != nil {\n\t\t\tuserData = param\n\t\t}\n\t\tmainServer, err := instance.NewServer(ctx, \"main\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_focal\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// User data with a single value\n\t\t_, err = instance.NewUserData(ctx, \"main\", \u0026instance.UserDataArgs{\n\t\t\tServerId: mainServer.ID(),\n\t\t\tKey:      pulumi.String(\"foo\"),\n\t\t\tValue:    pulumi.String(\"bar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// User Data with many keys.\n\t\tvar data []*instance.UserData\n\t\tfor key0, val0 := range userData {\n\t\t\t__res, err := instance.NewUserData(ctx, fmt.Sprintf(\"data-%v\", key0), \u0026instance.UserDataArgs{\n\t\t\t\tServerId: mainServer.ID(),\n\t\t\t\tKey:      pulumi.String(pulumi.String(key0)),\n\t\t\t\tValue:    pulumi.Any(val0),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tdata = append(data, __res)\n\t\t}\n\t\treturn nil\n\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.UserData;\nimport com.pulumi.scaleway.instance.UserDataArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var userData = config.get(\"userData\").orElse(Map.ofEntries(\n            Map.entry(\"cloud-init\", \"\"\"\n#cloud-config\napt-update: true\napt-upgrade: true\n            \"\"\"),\n            Map.entry(\"foo\", \"bar\")\n        ));\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .image(\"ubuntu_focal\")\n            .type(\"DEV1-S\")\n            .build());\n\n        // User data with a single value\n        var main = new UserData(\"main\", UserDataArgs.builder()\n            .serverId(mainServer.id())\n            .key(\"foo\")\n            .value(\"bar\")\n            .build());\n\n        // User Data with many keys.\n        for (var range : KeyedValue.of(userData)) {\n            new UserData(\"data-\" + range.key(), UserDataArgs.builder()\n                .serverId(mainServer.id())\n                .key(range.key())\n                .value(range.value())\n                .build());\n        }\n\n    }\n}\n```\n```yaml\nconfiguration:\n  userData:\n    type: object\n    default:\n      cloud-init: |\n        #cloud-config\n        apt-update: true\n        apt-upgrade: true\n      foo: bar\nresources:\n  # User data with a single value\n  main:\n    type: scaleway:instance:UserData\n    properties:\n      serverId: ${mainServer.id}\n      key: foo\n      value: bar\n  # User Data with many keys.\n  data:\n    type: scaleway:instance:UserData\n    properties:\n      serverId: ${mainServer.id}\n      key: ${range.key}\n      value: ${range.value}\n    options: {}\n  mainServer:\n    type: scaleway:instance:Server\n    name: main\n    properties:\n      image: ubuntu_focal\n      type: DEV1-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUser data can be imported using the `{zone}/{key}/{server_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceUserData:InstanceUserData main fr-par-1/cloud-init/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key of the user data.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value associated with your key\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n"
                }
            },
            "required": [
                "key",
                "serverId",
                "value"
            ],
            "inputProperties": {
                "key": {
                    "type": "string",
                    "description": "Key of the user data.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value associated with your key\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "key",
                "serverId",
                "value"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceUserData resources.\n",
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "Key of the user data.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server associated with.\n"
                    },
                    "value": {
                        "type": "string",
                        "description": "Value associated with your key\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instanceuserdata.InstanceUserData has been deprecated in favor of scaleway.instance/userdata.UserData"
        },
        "scaleway:index/instanceVolume:InstanceVolume": {
            "description": "Creates and manages Scaleway compute Instance Volumes.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-volumes-list-volumes).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverVolume = new scaleway.instance.Volume(\"server_volume\", {\n    type: \"l_ssd\",\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_volume = scaleway.instance.Volume(\"server_volume\",\n    type=\"l_ssd\",\n    name=\"some-volume-name\",\n    size_in_gb=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverVolume = new Scaleway.Instance.Volume(\"server_volume\", new()\n    {\n        Type = \"l_ssd\",\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewVolume(ctx, \"server_volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"l_ssd\"),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\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.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverVolume = new Volume(\"serverVolume\", VolumeArgs.builder()\n            .type(\"l_ssd\")\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  serverVolume:\n    type: scaleway:instance:Volume\n    name: server_volume\n    properties:\n      type: l_ssd\n      name: some-volume-name\n      sizeInGb: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nvolumes can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/instanceVolume:InstanceVolume server_volume fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "fromSnapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n"
                },
                "migrateToSbs": {
                    "type": "boolean",
                    "description": "If true, consider that this volume may have been migrated and no longer exists."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the volume is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The id of the associated server.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "serverId",
                "type"
            ],
            "inputProperties": {
                "fromSnapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n",
                    "willReplaceOnChanges": true
                },
                "migrateToSbs": {
                    "type": "boolean",
                    "description": "If true, consider that this volume may have been migrated and no longer exists."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering InstanceVolume resources.\n",
                "properties": {
                    "fromSnapshotId": {
                        "type": "string",
                        "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n",
                        "willReplaceOnChanges": true
                    },
                    "migrateToSbs": {
                        "type": "boolean",
                        "description": "If true, consider that this volume may have been migrated and no longer exists."
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the volume. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the volume is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The id of the associated server.\n"
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the volume.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/instancevolume.InstanceVolume has been deprecated in favor of scaleway.instance/volume.Volume"
        },
        "scaleway:index/iotDevice:IotDevice": {
            "description": "\u003e **Note:** This terraform resource is currently in beta and might include breaking change in future releases.\n\nCreates and manages Scaleway IoT Hub Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iot/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iot.Hub(\"main\", {\n    name: \"test-iot\",\n    productPlan: \"plan_shared\",\n});\nconst mainDevice = new scaleway.iot.Device(\"main\", {\n    hubId: main.id,\n    name: \"test-iot\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iot.Hub(\"main\",\n    name=\"test-iot\",\n    product_plan=\"plan_shared\")\nmain_device = scaleway.iot.Device(\"main\",\n    hub_id=main.id,\n    name=\"test-iot\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"test-iot\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var mainDevice = new Scaleway.Iot.Device(\"main\", new()\n    {\n        HubId = main.Id,\n        Name = \"test-iot\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"test-iot\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewDevice(ctx, \"main\", \u0026iot.DeviceArgs{\n\t\t\tHubId: main.ID(),\n\t\t\tName:  pulumi.String(\"test-iot\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.iot.Device;\nimport com.pulumi.scaleway.iot.DeviceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Hub(\"main\", HubArgs.builder()\n            .name(\"test-iot\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var mainDevice = new Device(\"mainDevice\", DeviceArgs.builder()\n            .hubId(main.id())\n            .name(\"test-iot\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Hub\n    properties:\n      name: test-iot\n      productPlan: plan_shared\n  mainDevice:\n    type: scaleway:iot:Device\n    name: main\n    properties:\n      hubId: ${main.id}\n      name: test-iot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIoT devices can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iotDevice:IotDevice device01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "allowInsecure": {
                    "type": "boolean",
                    "description": "Allow plain and server-authenticated TLS connections in addition to mutually-authenticated ones.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowInsecure`\" pulumi-lang-dotnet=\"`AllowInsecure`\" pulumi-lang-go=\"`allowInsecure`\" pulumi-lang-python=\"`allow_insecure`\" pulumi-lang-yaml=\"`allowInsecure`\" pulumi-lang-java=\"`allowInsecure`\"\u003e`allowInsecure`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "allowMultipleConnections": {
                    "type": "boolean",
                    "description": "Allow more than one simultaneous connection using the same device credentials.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowMultipleConnections`\" pulumi-lang-dotnet=\"`AllowMultipleConnections`\" pulumi-lang-go=\"`allowMultipleConnections`\" pulumi-lang-python=\"`allow_multiple_connections`\" pulumi-lang-yaml=\"`allowMultipleConnections`\" pulumi-lang-java=\"`allowMultipleConnections`\"\u003e`allowMultipleConnections`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "certificate": {
                    "$ref": "#/types/scaleway:index/IotDeviceCertificate:IotDeviceCertificate",
                    "description": "The certificate bundle of the device.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the device was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IoT device (e.g. `living room`).\n"
                },
                "hubId": {
                    "type": "string",
                    "description": "The ID of the hub on which this device will be created.\n"
                },
                "isConnected": {
                    "type": "boolean",
                    "description": "The current connection status of the device.\n"
                },
                "lastActivityAt": {
                    "type": "string",
                    "description": "The last MQTT activity of the device.\n"
                },
                "messageFilters": {
                    "$ref": "#/types/scaleway:index/IotDeviceMessageFilters:IotDeviceMessageFilters",
                    "description": "Rules that define which messages are authorized or denied based on their topic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT device you want to create (e.g. `my-device`).\n\n\u003e **Important:** Updates to \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 destroy and recreate a new resource.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the device.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the device resource was updated.\n"
                }
            },
            "required": [
                "certificate",
                "createdAt",
                "hubId",
                "isConnected",
                "lastActivityAt",
                "name",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "allowInsecure": {
                    "type": "boolean",
                    "description": "Allow plain and server-authenticated TLS connections in addition to mutually-authenticated ones.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowInsecure`\" pulumi-lang-dotnet=\"`AllowInsecure`\" pulumi-lang-go=\"`allowInsecure`\" pulumi-lang-python=\"`allow_insecure`\" pulumi-lang-yaml=\"`allowInsecure`\" pulumi-lang-java=\"`allowInsecure`\"\u003e`allowInsecure`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "allowMultipleConnections": {
                    "type": "boolean",
                    "description": "Allow more than one simultaneous connection using the same device credentials.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowMultipleConnections`\" pulumi-lang-dotnet=\"`AllowMultipleConnections`\" pulumi-lang-go=\"`allowMultipleConnections`\" pulumi-lang-python=\"`allow_multiple_connections`\" pulumi-lang-yaml=\"`allowMultipleConnections`\" pulumi-lang-java=\"`allowMultipleConnections`\"\u003e`allowMultipleConnections`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "certificate": {
                    "$ref": "#/types/scaleway:index/IotDeviceCertificate:IotDeviceCertificate",
                    "description": "The certificate bundle of the device.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IoT device (e.g. `living room`).\n"
                },
                "hubId": {
                    "type": "string",
                    "description": "The ID of the hub on which this device will be created.\n"
                },
                "messageFilters": {
                    "$ref": "#/types/scaleway:index/IotDeviceMessageFilters:IotDeviceMessageFilters",
                    "description": "Rules that define which messages are authorized or denied based on their topic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT device you want to create (e.g. `my-device`).\n\n\u003e **Important:** Updates to \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 destroy and recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "hubId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IotDevice resources.\n",
                "properties": {
                    "allowInsecure": {
                        "type": "boolean",
                        "description": "Allow plain and server-authenticated TLS connections in addition to mutually-authenticated ones.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowInsecure`\" pulumi-lang-dotnet=\"`AllowInsecure`\" pulumi-lang-go=\"`allowInsecure`\" pulumi-lang-python=\"`allow_insecure`\" pulumi-lang-yaml=\"`allowInsecure`\" pulumi-lang-java=\"`allowInsecure`\"\u003e`allowInsecure`\u003c/span\u003e can disconnect eventually connected devices.\n"
                    },
                    "allowMultipleConnections": {
                        "type": "boolean",
                        "description": "Allow more than one simultaneous connection using the same device credentials.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowMultipleConnections`\" pulumi-lang-dotnet=\"`AllowMultipleConnections`\" pulumi-lang-go=\"`allowMultipleConnections`\" pulumi-lang-python=\"`allow_multiple_connections`\" pulumi-lang-yaml=\"`allowMultipleConnections`\" pulumi-lang-java=\"`allowMultipleConnections`\"\u003e`allowMultipleConnections`\u003c/span\u003e can disconnect eventually connected devices.\n"
                    },
                    "certificate": {
                        "$ref": "#/types/scaleway:index/IotDeviceCertificate:IotDeviceCertificate",
                        "description": "The certificate bundle of the device.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the device was created.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the IoT device (e.g. `living room`).\n"
                    },
                    "hubId": {
                        "type": "string",
                        "description": "The ID of the hub on which this device will be created.\n"
                    },
                    "isConnected": {
                        "type": "boolean",
                        "description": "The current connection status of the device.\n"
                    },
                    "lastActivityAt": {
                        "type": "string",
                        "description": "The last MQTT activity of the device.\n"
                    },
                    "messageFilters": {
                        "$ref": "#/types/scaleway:index/IotDeviceMessageFilters:IotDeviceMessageFilters",
                        "description": "Rules that define which messages are authorized or denied based on their topic.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IoT device you want to create (e.g. `my-device`).\n\n\u003e **Important:** Updates to \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 destroy and recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region you want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the device.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the device resource was updated.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iotdevice.IotDevice has been deprecated in favor of scaleway.iot/device.Device"
        },
        "scaleway:index/iotHub:IotHub": {
            "description": "\u003e **Note:** This terraform resource is currently in beta and might include breaking change in future releases.\n\nCreates and manages Scaleway IoT Hub Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iot).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iot.Hub(\"main\", {\n    name: \"test-iot\",\n    productPlan: \"plan_shared\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iot.Hub(\"main\",\n    name=\"test-iot\",\n    product_plan=\"plan_shared\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"test-iot\",\n        ProductPlan = \"plan_shared\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"test-iot\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Hub(\"main\", HubArgs.builder()\n            .name(\"test-iot\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Hub\n    properties:\n      name: test-iot\n      productPlan: plan_shared\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIoT Hubs can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iotHub:IotHub hub01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "connectedDeviceCount": {
                    "type": "integer",
                    "description": "The current number of connected devices in the Hub.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the Hub was created.\n"
                },
                "deviceAutoProvisioning": {
                    "type": "boolean",
                    "description": "Wether to enable the device auto provisioning or not"
                },
                "deviceCount": {
                    "type": "integer",
                    "description": "The number of registered devices in the Hub.\n"
                },
                "disableEvents": {
                    "type": "boolean",
                    "description": "Whether to enable the hub events or not"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the IoT Hub instance should be enabled or not.\n\n\u003e **Important:** Updates to \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 will disconnect eventually connected devices.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The MQTT network endpoint to connect MQTT devices to.\n"
                },
                "eventsTopicPrefix": {
                    "type": "string",
                    "description": "Topic prefix for the hub events"
                },
                "hubCa": {
                    "type": "string",
                    "description": "Custom user provided certificate authority"
                },
                "hubCaChallenge": {
                    "type": "string",
                    "description": "Challenge certificate for the user provided hub CA"
                },
                "mqttCa": {
                    "type": "string",
                    "description": "The MQTT certificate content\n"
                },
                "mqttCaUrl": {
                    "type": "string",
                    "description": "The MQTT ca url\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Hub instance you want to create (e.g. `my-hub`).\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003eyou want to attach the resource to"
                },
                "productPlan": {
                    "type": "string",
                    "description": "Product plan to create the hub, see documentation for available product plans (e.g. \u003cspan pulumi-lang-nodejs=\"`planShared`\" pulumi-lang-dotnet=\"`PlanShared`\" pulumi-lang-go=\"`planShared`\" pulumi-lang-python=\"`plan_shared`\" pulumi-lang-yaml=\"`planShared`\" pulumi-lang-java=\"`planShared`\"\u003e`planShared`\u003c/span\u003e)\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`productPlan`\" pulumi-lang-dotnet=\"`ProductPlan`\" pulumi-lang-go=\"`productPlan`\" pulumi-lang-python=\"`product_plan`\" pulumi-lang-yaml=\"`productPlan`\" pulumi-lang-java=\"`productPlan`\"\u003e`productPlan`\u003c/span\u003e will recreate the IoT Hub Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IoT Hub Instance is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the Hub.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the Hub resource was updated.\n"
                }
            },
            "required": [
                "connectedDeviceCount",
                "createdAt",
                "deviceCount",
                "endpoint",
                "mqttCa",
                "mqttCaUrl",
                "name",
                "organizationId",
                "productPlan",
                "projectId",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "deviceAutoProvisioning": {
                    "type": "boolean",
                    "description": "Wether to enable the device auto provisioning or not"
                },
                "disableEvents": {
                    "type": "boolean",
                    "description": "Whether to enable the hub events or not"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the IoT Hub instance should be enabled or not.\n\n\u003e **Important:** Updates to \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 will disconnect eventually connected devices.\n"
                },
                "eventsTopicPrefix": {
                    "type": "string",
                    "description": "Topic prefix for the hub events"
                },
                "hubCa": {
                    "type": "string",
                    "description": "Custom user provided certificate authority"
                },
                "hubCaChallenge": {
                    "type": "string",
                    "description": "Challenge certificate for the user provided hub CA"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Hub instance you want to create (e.g. `my-hub`).\n"
                },
                "productPlan": {
                    "type": "string",
                    "description": "Product plan to create the hub, see documentation for available product plans (e.g. \u003cspan pulumi-lang-nodejs=\"`planShared`\" pulumi-lang-dotnet=\"`PlanShared`\" pulumi-lang-go=\"`planShared`\" pulumi-lang-python=\"`plan_shared`\" pulumi-lang-yaml=\"`planShared`\" pulumi-lang-java=\"`planShared`\"\u003e`planShared`\u003c/span\u003e)\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`productPlan`\" pulumi-lang-dotnet=\"`ProductPlan`\" pulumi-lang-go=\"`productPlan`\" pulumi-lang-python=\"`product_plan`\" pulumi-lang-yaml=\"`productPlan`\" pulumi-lang-java=\"`productPlan`\"\u003e`productPlan`\u003c/span\u003e will recreate the IoT Hub Instance.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IoT Hub Instance is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the Database Instance should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "productPlan"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IotHub resources.\n",
                "properties": {
                    "connectedDeviceCount": {
                        "type": "integer",
                        "description": "The current number of connected devices in the Hub.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the Hub was created.\n"
                    },
                    "deviceAutoProvisioning": {
                        "type": "boolean",
                        "description": "Wether to enable the device auto provisioning or not"
                    },
                    "deviceCount": {
                        "type": "integer",
                        "description": "The number of registered devices in the Hub.\n"
                    },
                    "disableEvents": {
                        "type": "boolean",
                        "description": "Whether to enable the hub events or not"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "Whether the IoT Hub instance should be enabled or not.\n\n\u003e **Important:** Updates to \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 will disconnect eventually connected devices.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The MQTT network endpoint to connect MQTT devices to.\n"
                    },
                    "eventsTopicPrefix": {
                        "type": "string",
                        "description": "Topic prefix for the hub events"
                    },
                    "hubCa": {
                        "type": "string",
                        "description": "Custom user provided certificate authority"
                    },
                    "hubCaChallenge": {
                        "type": "string",
                        "description": "Challenge certificate for the user provided hub CA"
                    },
                    "mqttCa": {
                        "type": "string",
                        "description": "The MQTT certificate content\n"
                    },
                    "mqttCaUrl": {
                        "type": "string",
                        "description": "The MQTT ca url\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IoT Hub instance you want to create (e.g. `my-hub`).\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003eyou want to attach the resource to"
                    },
                    "productPlan": {
                        "type": "string",
                        "description": "Product plan to create the hub, see documentation for available product plans (e.g. \u003cspan pulumi-lang-nodejs=\"`planShared`\" pulumi-lang-dotnet=\"`PlanShared`\" pulumi-lang-go=\"`planShared`\" pulumi-lang-python=\"`plan_shared`\" pulumi-lang-yaml=\"`planShared`\" pulumi-lang-java=\"`planShared`\"\u003e`planShared`\u003c/span\u003e)\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`productPlan`\" pulumi-lang-dotnet=\"`ProductPlan`\" pulumi-lang-go=\"`productPlan`\" pulumi-lang-python=\"`product_plan`\" pulumi-lang-yaml=\"`productPlan`\" pulumi-lang-java=\"`productPlan`\"\u003e`productPlan`\u003c/span\u003e will recreate the IoT Hub Instance.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IoT Hub Instance is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the Database Instance should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the Hub.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the Hub resource was updated.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iothub.IotHub has been deprecated in favor of scaleway.iot/hub.Hub"
        },
        "scaleway:index/iotNetwork:IotNetwork": {
            "description": "\u003e **Note:** This terraform resource is currently in beta and might include breaking change in future releases.\n\nCreates and manages Scaleway IoT Networks. For more information, see the following:\n\n- [API documentation](https://www.scaleway.com/en/developers/api/iot/).\n- [Product documentation](https://www.scaleway.com/en/docs/iot-hub/)\n\nFor more step-by-step instructions on how to setup the networks on the external providers backends, you can follow these guides:\n\n- [Configuring the Sigfox backend](https://www.scaleway.com/en/docs/iot-hub/how-to/setup-use-sigfox-network/)\n- [Using the Rest Network](https://www.scaleway.com/en/docs/iot-hub/how-to/setup-use-rest-network/)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainHub = new scaleway.iot.Hub(\"main\", {\n    name: \"main\",\n    productPlan: \"plan_shared\",\n});\nconst main = new scaleway.iot.Network(\"main\", {\n    name: \"main\",\n    hubId: mainHub.id,\n    type: \"sigfox\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_hub = scaleway.iot.Hub(\"main\",\n    name=\"main\",\n    product_plan=\"plan_shared\")\nmain = scaleway.iot.Network(\"main\",\n    name=\"main\",\n    hub_id=main_hub.id,\n    type=\"sigfox\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainHub = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"main\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var main = new Scaleway.Iot.Network(\"main\", new()\n    {\n        Name = \"main\",\n        HubId = mainHub.Id,\n        Type = \"sigfox\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainHub, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"main\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewNetwork(ctx, \"main\", \u0026iot.NetworkArgs{\n\t\t\tName:  pulumi.String(\"main\"),\n\t\t\tHubId: mainHub.ID(),\n\t\t\tType:  pulumi.String(\"sigfox\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.iot.Network;\nimport com.pulumi.scaleway.iot.NetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainHub = new Hub(\"mainHub\", HubArgs.builder()\n            .name(\"main\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var main = new Network(\"main\", NetworkArgs.builder()\n            .name(\"main\")\n            .hubId(mainHub.id())\n            .type(\"sigfox\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Network\n    properties:\n      name: main\n      hubId: ${mainHub.id}\n      type: sigfox\n  mainHub:\n    type: scaleway:iot:Hub\n    name: main\n    properties:\n      name: main\n      productPlan: plan_shared\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIoT Networks can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iotNetwork:IotNetwork net01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the Network was created.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint to use when interacting with the network.\n"
                },
                "hubId": {
                    "type": "string",
                    "description": "The hub ID to which the Network will be attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Network you want to create (e.g. `my-net`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the Network is attached to.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The endpoint key to keep secret.\n",
                    "secret": true
                },
                "topicPrefix": {
                    "type": "string",
                    "description": "The prefix that will be prepended to all topics for this Network.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The network type to create (e.g. \u003cspan pulumi-lang-nodejs=\"`sigfox`\" pulumi-lang-dotnet=\"`Sigfox`\" pulumi-lang-go=\"`sigfox`\" pulumi-lang-python=\"`sigfox`\" pulumi-lang-yaml=\"`sigfox`\" pulumi-lang-java=\"`sigfox`\"\u003e`sigfox`\u003c/span\u003e).\n"
                }
            },
            "required": [
                "createdAt",
                "endpoint",
                "hubId",
                "name",
                "secret",
                "type"
            ],
            "inputProperties": {
                "hubId": {
                    "type": "string",
                    "description": "The hub ID to which the Network will be attached to.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Network you want to create (e.g. `my-net`).\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the Network is attached to.\n",
                    "willReplaceOnChanges": true
                },
                "topicPrefix": {
                    "type": "string",
                    "description": "The prefix that will be prepended to all topics for this Network.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The network type to create (e.g. \u003cspan pulumi-lang-nodejs=\"`sigfox`\" pulumi-lang-dotnet=\"`Sigfox`\" pulumi-lang-go=\"`sigfox`\" pulumi-lang-python=\"`sigfox`\" pulumi-lang-yaml=\"`sigfox`\" pulumi-lang-java=\"`sigfox`\"\u003e`sigfox`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "hubId",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IotNetwork resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the Network was created.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint to use when interacting with the network.\n"
                    },
                    "hubId": {
                        "type": "string",
                        "description": "The hub ID to which the Network will be attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IoT Network you want to create (e.g. `my-net`).\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the Network is attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "secret": {
                        "type": "string",
                        "description": "The endpoint key to keep secret.\n",
                        "secret": true
                    },
                    "topicPrefix": {
                        "type": "string",
                        "description": "The prefix that will be prepended to all topics for this Network.\n",
                        "willReplaceOnChanges": true
                    },
                    "type": {
                        "type": "string",
                        "description": "The network type to create (e.g. \u003cspan pulumi-lang-nodejs=\"`sigfox`\" pulumi-lang-dotnet=\"`Sigfox`\" pulumi-lang-go=\"`sigfox`\" pulumi-lang-python=\"`sigfox`\" pulumi-lang-yaml=\"`sigfox`\" pulumi-lang-java=\"`sigfox`\"\u003e`sigfox`\u003c/span\u003e).\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iotnetwork.IotNetwork has been deprecated in favor of scaleway.iot/network.Network"
        },
        "scaleway:index/iotRoute:IotRoute": {
            "description": "\u003e **Note:** This terraform resource is currently in beta and might include breaking change in future releases.\n\nCreates and manages Scaleway IoT Routes. For more information, see the following:\n\n- [API documentation](https://www.scaleway.com/en/developers/api/iot/).\n- [Product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/)\n\n## Example Usage\n\n### Database Route\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainHub = new scaleway.iot.Hub(\"main\", {\n    name: \"main\",\n    productPlan: \"plan_shared\",\n});\nconst iot = new scaleway.databases.Instance(\"iot\", {\n    name: \"iot\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-12\",\n    userName: \"root\",\n    password: \"T3stP4ssw0rdD0N0tUs3!\",\n});\nconst main = new scaleway.iot.Route(\"main\", {\n    name: \"default\",\n    hubId: mainHub.id,\n    topic: \"#\",\n    database: {\n        query: `INSERT INTO measurements(\n\\\\tpush_time,\n\\\\treport_time,\n\\\\tstation_id,\n\\\\ttemperature,\n\\\\thumidity\n) VALUES (\n\\\\tNOW(),\n\\\\tTIMESTAMP 'epoch' + ((PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n\\\\t(PAYLOAD::jsonb-\u003e'station_id')::uuid,\n\\\\t(PAYLOAD::jsonb-\u003e'temperature')::decimal,\n\\\\t(PAYLOAD::jsonb-\u003e'humidity'):decimal:\n);\n`,\n        host: iot.endpointIp,\n        port: iot.endpointPort,\n        dbname: \"rdb\",\n        username: iot.userName,\n        password: iot.password,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_hub = scaleway.iot.Hub(\"main\",\n    name=\"main\",\n    product_plan=\"plan_shared\")\niot = scaleway.databases.Instance(\"iot\",\n    name=\"iot\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-12\",\n    user_name=\"root\",\n    password=\"T3stP4ssw0rdD0N0tUs3!\")\nmain = scaleway.iot.Route(\"main\",\n    name=\"default\",\n    hub_id=main_hub.id,\n    topic=\"#\",\n    database={\n        \"query\": \"\"\"INSERT INTO measurements(\n\\tpush_time,\n\\treport_time,\n\\tstation_id,\n\\ttemperature,\n\\thumidity\n) VALUES (\n\\tNOW(),\n\\tTIMESTAMP 'epoch' + (($PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n\\t($PAYLOAD::jsonb-\u003e'station_id')::uuid,\n\\t($PAYLOAD::jsonb-\u003e'temperature')::decimal,\n\\t($PAYLOAD::jsonb-\u003e'humidity'):decimal:\n);\n\"\"\",\n        \"host\": iot.endpoint_ip,\n        \"port\": iot.endpoint_port,\n        \"dbname\": \"rdb\",\n        \"username\": iot.user_name,\n        \"password\": iot.password,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainHub = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"main\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var iot = new Scaleway.Databases.Instance(\"iot\", new()\n    {\n        Name = \"iot\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-12\",\n        UserName = \"root\",\n        Password = \"T3stP4ssw0rdD0N0tUs3!\",\n    });\n\n    var main = new Scaleway.Iot.Route(\"main\", new()\n    {\n        Name = \"default\",\n        HubId = mainHub.Id,\n        Topic = \"#\",\n        Database = new Scaleway.Iot.Inputs.RouteDatabaseArgs\n        {\n            Query = @\"INSERT INTO measurements(\n\\tpush_time,\n\\treport_time,\n\\tstation_id,\n\\ttemperature,\n\\thumidity\n) VALUES (\n\\tNOW(),\n\\tTIMESTAMP 'epoch' + (($PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n\\t($PAYLOAD::jsonb-\u003e'station_id')::uuid,\n\\t($PAYLOAD::jsonb-\u003e'temperature')::decimal,\n\\t($PAYLOAD::jsonb-\u003e'humidity'):decimal:\n);\n\",\n            Host = iot.EndpointIp,\n            Port = iot.EndpointPort,\n            Dbname = \"rdb\",\n            Username = iot.UserName,\n            Password = iot.Password,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainHub, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"main\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tiot2, err := databases.NewInstance(ctx, \"iot\", \u0026databases.InstanceArgs{\n\t\t\tName:     pulumi.String(\"iot\"),\n\t\t\tNodeType: pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:   pulumi.String(\"PostgreSQL-12\"),\n\t\t\tUserName: pulumi.String(\"root\"),\n\t\t\tPassword: pulumi.String(\"T3stP4ssw0rdD0N0tUs3!\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewRoute(ctx, \"main\", \u0026iot.RouteArgs{\n\t\t\tName:  pulumi.String(\"default\"),\n\t\t\tHubId: mainHub.ID(),\n\t\t\tTopic: pulumi.String(\"#\"),\n\t\t\tDatabase: \u0026iot.RouteDatabaseArgs{\n\t\t\t\tQuery: pulumi.String(`INSERT INTO measurements(\n\\tpush_time,\n\\treport_time,\n\\tstation_id,\n\\ttemperature,\n\\thumidity\n) VALUES (\n\\tNOW(),\n\\tTIMESTAMP 'epoch' + (($PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n\\t($PAYLOAD::jsonb-\u003e'station_id')::uuid,\n\\t($PAYLOAD::jsonb-\u003e'temperature')::decimal,\n\\t($PAYLOAD::jsonb-\u003e'humidity'):decimal:\n);\n`),\n\t\t\t\tHost:     iot2.EndpointIp,\n\t\t\t\tPort:     iot2.EndpointPort,\n\t\t\t\tDbname:   pulumi.String(\"rdb\"),\n\t\t\t\tUsername: iot2.UserName,\n\t\t\t\tPassword: iot2.Password,\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.iot.Route;\nimport com.pulumi.scaleway.iot.RouteArgs;\nimport com.pulumi.scaleway.iot.inputs.RouteDatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainHub = new Hub(\"mainHub\", HubArgs.builder()\n            .name(\"main\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var iot = new Instance(\"iot\", InstanceArgs.builder()\n            .name(\"iot\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-12\")\n            .userName(\"root\")\n            .password(\"T3stP4ssw0rdD0N0tUs3!\")\n            .build());\n\n        var main = new Route(\"main\", RouteArgs.builder()\n            .name(\"default\")\n            .hubId(mainHub.id())\n            .topic(\"#\")\n            .database(RouteDatabaseArgs.builder()\n                .query(\"\"\"\nINSERT INTO measurements(\n\\tpush_time,\n\\treport_time,\n\\tstation_id,\n\\ttemperature,\n\\thumidity\n) VALUES (\n\\tNOW(),\n\\tTIMESTAMP 'epoch' + (($PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n\\t($PAYLOAD::jsonb-\u003e'station_id')::uuid,\n\\t($PAYLOAD::jsonb-\u003e'temperature')::decimal,\n\\t($PAYLOAD::jsonb-\u003e'humidity'):decimal:\n);\n                \"\"\")\n                .host(iot.endpointIp())\n                .port(iot.endpointPort())\n                .dbname(\"rdb\")\n                .username(iot.userName())\n                .password(iot.password())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Route\n    properties:\n      name: default\n      hubId: ${mainHub.id}\n      topic: '#'\n      database:\n        query: |\n          INSERT INTO measurements(\n          \\tpush_time,\n          \\treport_time,\n          \\tstation_id,\n          \\ttemperature,\n          \\thumidity\n          ) VALUES (\n          \\tNOW(),\n          \\tTIMESTAMP 'epoch' + (($PAYLOAD::jsonb-\u003e'last_reported')::integer * INTERVAL '1 second'),\n          \\t($PAYLOAD::jsonb-\u003e'station_id')::uuid,\n          \\t($PAYLOAD::jsonb-\u003e'temperature')::decimal,\n          \\t($PAYLOAD::jsonb-\u003e'humidity'):decimal:\n          );\n        host: ${iot.endpointIp}\n        port: ${iot.endpointPort}\n        dbname: rdb\n        username: ${iot.userName}\n        password: ${iot.password}\n  mainHub:\n    type: scaleway:iot:Hub\n    name: main\n    properties:\n      name: main\n      productPlan: plan_shared\n  iot:\n    type: scaleway:databases:Instance\n    properties:\n      name: iot\n      nodeType: db-dev-s\n      engine: PostgreSQL-12\n      userName: root\n      password: T3stP4ssw0rdD0N0tUs3!\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### S3 Route\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainHub = new scaleway.iot.Hub(\"main\", {\n    name: \"main\",\n    productPlan: \"plan_shared\",\n});\nconst mainBucket = new scaleway.object.Bucket(\"main\", {\n    region: \"fr-par\",\n    name: \"my_awesome-bucket\",\n});\nconst main = new scaleway.iot.Route(\"main\", {\n    name: \"main\",\n    hubId: mainHub.id,\n    topic: \"#\",\n    s3: {\n        bucketRegion: mainBucket.region,\n        bucketName: mainBucket.name,\n        objectPrefix: \"foo\",\n        strategy: \"per_topic\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_hub = scaleway.iot.Hub(\"main\",\n    name=\"main\",\n    product_plan=\"plan_shared\")\nmain_bucket = scaleway.object.Bucket(\"main\",\n    region=\"fr-par\",\n    name=\"my_awesome-bucket\")\nmain = scaleway.iot.Route(\"main\",\n    name=\"main\",\n    hub_id=main_hub.id,\n    topic=\"#\",\n    s3={\n        \"bucket_region\": main_bucket.region,\n        \"bucket_name\": main_bucket.name,\n        \"object_prefix\": \"foo\",\n        \"strategy\": \"per_topic\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainHub = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"main\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var mainBucket = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Region = \"fr-par\",\n        Name = \"my_awesome-bucket\",\n    });\n\n    var main = new Scaleway.Iot.Route(\"main\", new()\n    {\n        Name = \"main\",\n        HubId = mainHub.Id,\n        Topic = \"#\",\n        S3 = new Scaleway.Iot.Inputs.RouteS3Args\n        {\n            BucketRegion = mainBucket.Region,\n            BucketName = mainBucket.Name,\n            ObjectPrefix = \"foo\",\n            Strategy = \"per_topic\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainHub, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"main\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainBucket, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t\tName:   pulumi.String(\"my_awesome-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewRoute(ctx, \"main\", \u0026iot.RouteArgs{\n\t\t\tName:  pulumi.String(\"main\"),\n\t\t\tHubId: mainHub.ID(),\n\t\t\tTopic: pulumi.String(\"#\"),\n\t\t\tS3: \u0026iot.RouteS3Args{\n\t\t\t\tBucketRegion: mainBucket.Region,\n\t\t\t\tBucketName:   mainBucket.Name,\n\t\t\t\tObjectPrefix: pulumi.String(\"foo\"),\n\t\t\t\tStrategy:     pulumi.String(\"per_topic\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.iot.Route;\nimport com.pulumi.scaleway.iot.RouteArgs;\nimport com.pulumi.scaleway.iot.inputs.RouteS3Args;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainHub = new Hub(\"mainHub\", HubArgs.builder()\n            .name(\"main\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var mainBucket = new Bucket(\"mainBucket\", BucketArgs.builder()\n            .region(\"fr-par\")\n            .name(\"my_awesome-bucket\")\n            .build());\n\n        var main = new Route(\"main\", RouteArgs.builder()\n            .name(\"main\")\n            .hubId(mainHub.id())\n            .topic(\"#\")\n            .s3(RouteS3Args.builder()\n                .bucketRegion(mainBucket.region())\n                .bucketName(mainBucket.name())\n                .objectPrefix(\"foo\")\n                .strategy(\"per_topic\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Route\n    properties:\n      name: main\n      hubId: ${mainHub.id}\n      topic: '#'\n      s3:\n        bucketRegion: ${mainBucket.region}\n        bucketName: ${mainBucket.name}\n        objectPrefix: foo\n        strategy: per_topic\n  mainHub:\n    type: scaleway:iot:Hub\n    name: main\n    properties:\n      name: main\n      productPlan: plan_shared\n  mainBucket:\n    type: scaleway:object:Bucket\n    name: main\n    properties:\n      region: fr-par\n      name: my_awesome-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Rest Route\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst mainHub = new scaleway.iot.Hub(\"main\", {\n    name: \"main\",\n    productPlan: \"plan_shared\",\n});\nconst main = new scaleway.iot.Route(\"main\", {\n    name: \"main\",\n    hubId: mainHub.id,\n    topic: \"#\",\n    rest: {\n        verb: \"get\",\n        uri: \"http://scaleway.com\",\n        headers: {\n            \"X-awesome-header\": \"my-awesome-value\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain_hub = scaleway.iot.Hub(\"main\",\n    name=\"main\",\n    product_plan=\"plan_shared\")\nmain = scaleway.iot.Route(\"main\",\n    name=\"main\",\n    hub_id=main_hub.id,\n    topic=\"#\",\n    rest={\n        \"verb\": \"get\",\n        \"uri\": \"http://scaleway.com\",\n        \"headers\": {\n            \"X-awesome-header\": \"my-awesome-value\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mainHub = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"main\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var main = new Scaleway.Iot.Route(\"main\", new()\n    {\n        Name = \"main\",\n        HubId = mainHub.Id,\n        Topic = \"#\",\n        Rest = new Scaleway.Iot.Inputs.RouteRestArgs\n        {\n            Verb = \"get\",\n            Uri = \"http://scaleway.com\",\n            Headers = \n            {\n                { \"X-awesome-header\", \"my-awesome-value\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmainHub, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"main\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewRoute(ctx, \"main\", \u0026iot.RouteArgs{\n\t\t\tName:  pulumi.String(\"main\"),\n\t\t\tHubId: mainHub.ID(),\n\t\t\tTopic: pulumi.String(\"#\"),\n\t\t\tRest: \u0026iot.RouteRestArgs{\n\t\t\t\tVerb: pulumi.String(\"get\"),\n\t\t\t\tUri:  pulumi.String(\"http://scaleway.com\"),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"X-awesome-header\": pulumi.String(\"my-awesome-value\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.iot.Route;\nimport com.pulumi.scaleway.iot.RouteArgs;\nimport com.pulumi.scaleway.iot.inputs.RouteRestArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mainHub = new Hub(\"mainHub\", HubArgs.builder()\n            .name(\"main\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var main = new Route(\"main\", RouteArgs.builder()\n            .name(\"main\")\n            .hubId(mainHub.id())\n            .topic(\"#\")\n            .rest(RouteRestArgs.builder()\n                .verb(\"get\")\n                .uri(\"http://scaleway.com\")\n                .headers(Map.of(\"X-awesome-header\", \"my-awesome-value\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Route\n    properties:\n      name: main\n      hubId: ${mainHub.id}\n      topic: '#'\n      rest:\n        verb: get\n        uri: http://scaleway.com\n        headers:\n          X-awesome-header: my-awesome-value\n  mainHub:\n    type: scaleway:iot:Hub\n    name: main\n    properties:\n      name: main\n      productPlan: plan_shared\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIoT Routes can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/iotRoute:IotRoute route01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the Route was created.\n"
                },
                "database": {
                    "$ref": "#/types/scaleway:index/IotRouteDatabase:IotRouteDatabase",
                    "description": "Configuration block for the database routes. See  [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n"
                },
                "hubId": {
                    "type": "string",
                    "description": "The hub ID to which the Route will be attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Route you want to create (e.g. `my-route`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the Route is attached to.\n"
                },
                "rest": {
                    "$ref": "#/types/scaleway:index/IotRouteRest:IotRouteRest",
                    "description": "Configuration block for the rest routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n"
                },
                "s3": {
                    "$ref": "#/types/scaleway:index/IotRouteS3:IotRouteS3",
                    "description": "Configuration block for the S3 routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n"
                },
                "topic": {
                    "type": "string",
                    "description": "The topic the Route subscribes to, wildcards allowed (e.g. `thelab/+/temperature/#`).\n"
                }
            },
            "required": [
                "createdAt",
                "hubId",
                "name",
                "topic"
            ],
            "inputProperties": {
                "database": {
                    "$ref": "#/types/scaleway:index/IotRouteDatabase:IotRouteDatabase",
                    "description": "Configuration block for the database routes. See  [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                    "willReplaceOnChanges": true
                },
                "hubId": {
                    "type": "string",
                    "description": "The hub ID to which the Route will be attached to.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT Route you want to create (e.g. `my-route`).\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "(Defaults to provider \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) The region in which the Route is attached to.\n",
                    "willReplaceOnChanges": true
                },
                "rest": {
                    "$ref": "#/types/scaleway:index/IotRouteRest:IotRouteRest",
                    "description": "Configuration block for the rest routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                    "willReplaceOnChanges": true
                },
                "s3": {
                    "$ref": "#/types/scaleway:index/IotRouteS3:IotRouteS3",
                    "description": "Configuration block for the S3 routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                    "willReplaceOnChanges": true
                },
                "topic": {
                    "type": "string",
                    "description": "The topic the Route subscribes to, wildcards allowed (e.g. `thelab/+/temperature/#`).\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "hubId",
                "topic"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IotRoute resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the Route was created.\n"
                    },
                    "database": {
                        "$ref": "#/types/scaleway:index/IotRouteDatabase:IotRouteDatabase",
                        "description": "Configuration block for the database routes. See  [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                        "willReplaceOnChanges": true
                    },
                    "hubId": {
                        "type": "string",
                        "description": "The hub ID to which the Route will be attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the IoT Route you want to create (e.g. `my-route`).\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "(Defaults to provider \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) The region in which the Route is attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "rest": {
                        "$ref": "#/types/scaleway:index/IotRouteRest:IotRouteRest",
                        "description": "Configuration block for the rest routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                        "willReplaceOnChanges": true
                    },
                    "s3": {
                        "$ref": "#/types/scaleway:index/IotRouteS3:IotRouteS3",
                        "description": "Configuration block for the S3 routes. See [product documentation](https://www.scaleway.com/en/docs/iot-hub/how-to/create-route/) for a better understanding of the parameters.\n",
                        "willReplaceOnChanges": true
                    },
                    "topic": {
                        "type": "string",
                        "description": "The topic the Route subscribes to, wildcards allowed (e.g. `thelab/+/temperature/#`).\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/iotroute.IotRoute has been deprecated in favor of scaleway.iot/route.Route"
        },
        "scaleway:index/ipamIp:IpamIp": {
            "description": "Books and manages IPAM IPs.\n\nFor more information about IPAM, see the main [documentation](https://www.scaleway.com/en/docs/vpc/concepts/#ipam).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    vpcId: vpc01.id,\n    ipv4Subnet: {\n        subnet: \"172.16.32.0/22\",\n    },\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {sources: [{\n    privateNetworkId: pn01.id,\n}]});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    vpc_id=vpc01.id,\n    ipv4_subnet={\n        \"subnet\": \"172.16.32.0/22\",\n    })\nip01 = scaleway.ipam.Ip(\"ip01\", sources=[{\n    \"private_network_id\": pn01.id,\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        VpcId = vpc01.Id,\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.32.0/22\",\n        },\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tVpcId: vpc01.ID(),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.32.0/22\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .vpcId(vpc01.id())\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.32.0/22\")\n                .build())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      vpcId: ${vpc01.id}\n      ipv4Subnet:\n        subnet: 172.16.32.0/22\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      sources:\n        - privateNetworkId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Request a specific IPv4 address\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    vpcId: vpc01.id,\n    ipv4Subnet: {\n        subnet: \"172.16.32.0/22\",\n    },\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.32.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    vpc_id=vpc01.id,\n    ipv4_subnet={\n        \"subnet\": \"172.16.32.0/22\",\n    })\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.32.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        VpcId = vpc01.Id,\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.32.0/22\",\n        },\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.32.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tVpcId: vpc01.ID(),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.32.0/22\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.32.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .vpcId(vpc01.id())\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.32.0/22\")\n                .build())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .address(\"172.16.32.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      vpcId: ${vpc01.id}\n      ipv4Subnet:\n        subnet: 172.16.32.0/22\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.32.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Request an IPv6 address\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    vpcId: vpc01.id,\n    ipv6Subnets: [{\n        subnet: \"fd46:78ab:30b8:177c::/64\",\n    }],\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    isIpv6: true,\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    vpc_id=vpc01.id,\n    ipv6_subnets=[{\n        \"subnet\": \"fd46:78ab:30b8:177c::/64\",\n    }])\nip01 = scaleway.ipam.Ip(\"ip01\",\n    is_ipv6=True,\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        VpcId = vpc01.Id,\n        Ipv6Subnets = new[]\n        {\n            new Scaleway.Network.Inputs.PrivateNetworkIpv6SubnetArgs\n            {\n                Subnet = \"fd46:78ab:30b8:177c::/64\",\n            },\n        },\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        IsIpv6 = true,\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tVpcId: vpc01.ID(),\n\t\t\tIpv6Subnets: network.PrivateNetworkIpv6SubnetArray{\n\t\t\t\t\u0026network.PrivateNetworkIpv6SubnetArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"fd46:78ab:30b8:177c::/64\"),\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 = ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tIsIpv6: pulumi.Bool(true),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv6SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .vpcId(vpc01.id())\n            .ipv6Subnets(PrivateNetworkIpv6SubnetArgs.builder()\n                .subnet(\"fd46:78ab:30b8:177c::/64\")\n                .build())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .isIpv6(true)\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      vpcId: ${vpc01.id}\n      ipv6Subnets:\n        - subnet: fd46:78ab:30b8:177c::/64\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      isIpv6: true\n      sources:\n        - privateNetworkId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Book an IP for a custom resource\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    vpcId: vpc01.id,\n    ipv4Subnet: {\n        subnet: \"172.16.32.0/22\",\n    },\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.32.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n    customResources: [{\n        macAddress: \"bc:24:11:74:d0:6a\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    vpc_id=vpc01.id,\n    ipv4_subnet={\n        \"subnet\": \"172.16.32.0/22\",\n    })\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.32.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }],\n    custom_resources=[{\n        \"mac_address\": \"bc:24:11:74:d0:6a\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        VpcId = vpc01.Id,\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.32.0/22\",\n        },\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.32.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n        CustomResources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpCustomResourceArgs\n            {\n                MacAddress = \"bc:24:11:74:d0:6a\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tVpcId: vpc01.ID(),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.32.0/22\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.32.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCustomResources: ipam.IpCustomResourceArray{\n\t\t\t\t\u0026ipam.IpCustomResourceArgs{\n\t\t\t\t\tMacAddress: pulumi.String(\"bc:24:11:74:d0:6a\"),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpCustomResourceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .vpcId(vpc01.id())\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.32.0/22\")\n                .build())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .address(\"172.16.32.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .customResources(IpCustomResourceArgs.builder()\n                .macAddress(\"bc:24:11:74:d0:6a\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      vpcId: ${vpc01.id}\n      ipv4Subnet:\n        subnet: 172.16.32.0/22\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.32.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n      customResources:\n        - macAddress: bc:24:11:74:d0:6a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPAM IPs can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/ipamIp:IpamIp ip_demo fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "Request a specific IP in the specified source pool.\n\n\u003e **Important:** when requesting specific IP addresses, it is best ensure these are created before any other resource in the Private Network. This can be achieved by using \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 relations, or moving the declarations to another Terraform module. Otherwise, other resources may take the requested address first, blocking the whole Terraform setup. Static IPs should be avoided unless necessary, as we cannot guarantee full automation. We recommend to use DNS, or to not request a specific IP.\n"
                },
                "addressCidr": {
                    "type": "string",
                    "description": "the IP address in CIDR notation.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of IP's creation (RFC 3339 format).\n"
                },
                "customResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpCustomResource:IpamIpCustomResource"
                    },
                    "description": "The custom resource to attach to the IP being reserved. An example of a custom resource is a virtual machine hosted on an Elastic Metal server.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether to request an IPv6 address instead of IPv4.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the IP.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpResource:IpamIpResource"
                    },
                    "description": "The IP resource.\n"
                },
                "reverses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpReverse:IpamIpReverse"
                    },
                    "description": "The reverse DNS for this IP.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpSource:IpamIpSource"
                    },
                    "description": "The source in which to book the IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of IP's last update (RFC 3339 format).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone of the IP.\n"
                }
            },
            "required": [
                "address",
                "addressCidr",
                "createdAt",
                "projectId",
                "resources",
                "reverses",
                "sources",
                "updatedAt",
                "zone"
            ],
            "inputProperties": {
                "address": {
                    "type": "string",
                    "description": "Request a specific IP in the specified source pool.\n\n\u003e **Important:** when requesting specific IP addresses, it is best ensure these are created before any other resource in the Private Network. This can be achieved by using \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 relations, or moving the declarations to another Terraform module. Otherwise, other resources may take the requested address first, blocking the whole Terraform setup. Static IPs should be avoided unless necessary, as we cannot guarantee full automation. We recommend to use DNS, or to not request a specific IP.\n",
                    "willReplaceOnChanges": true
                },
                "customResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpCustomResource:IpamIpCustomResource"
                    },
                    "description": "The custom resource to attach to the IP being reserved. An example of a custom resource is a virtual machine hosted on an Elastic Metal server.\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether to request an IPv6 address instead of IPv4.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the IP.\n",
                    "willReplaceOnChanges": true
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/IpamIpSource:IpamIpSource"
                    },
                    "description": "The source in which to book the IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                }
            },
            "requiredInputs": [
                "sources"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpamIp resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "Request a specific IP in the specified source pool.\n\n\u003e **Important:** when requesting specific IP addresses, it is best ensure these are created before any other resource in the Private Network. This can be achieved by using \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 relations, or moving the declarations to another Terraform module. Otherwise, other resources may take the requested address first, blocking the whole Terraform setup. Static IPs should be avoided unless necessary, as we cannot guarantee full automation. We recommend to use DNS, or to not request a specific IP.\n",
                        "willReplaceOnChanges": true
                    },
                    "addressCidr": {
                        "type": "string",
                        "description": "the IP address in CIDR notation.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of IP's creation (RFC 3339 format).\n"
                    },
                    "customResources": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/IpamIpCustomResource:IpamIpCustomResource"
                        },
                        "description": "The custom resource to attach to the IP being reserved. An example of a custom resource is a virtual machine hosted on an Elastic Metal server.\n"
                    },
                    "isIpv6": {
                        "type": "boolean",
                        "description": "Defines whether to request an IPv6 address instead of IPv4.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the IP.\n",
                        "willReplaceOnChanges": true
                    },
                    "resources": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/IpamIpResource:IpamIpResource"
                        },
                        "description": "The IP resource.\n"
                    },
                    "reverses": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/IpamIpReverse:IpamIpReverse"
                        },
                        "description": "The reverse DNS for this IP.\n"
                    },
                    "sources": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/IpamIpSource:IpamIpSource"
                        },
                        "description": "The source in which to book the IP.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the IP.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of IP's last update (RFC 3339 format).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone of the IP.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/ipamip.IpamIp has been deprecated in favor of scaleway.ipam/ip.Ip"
        },
        "scaleway:index/ipamIpReverseDns:IpamIpReverseDns": {
            "description": "Manage the reverse DNS of IP addresses managed by Scaleway's IP Address Management (IPAM) service.\n\nFor more information about IPAM, see the main [documentation](https://www.scaleway.com/en/docs/vpc/concepts/#ipam).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst ip01 = new scaleway.instance.Ip(\"ip01\", {type: \"routed_ipv6\"});\nconst srv01 = new scaleway.instance.Server(\"srv01\", {\n    name: \"tf-tests-instance-server-ips\",\n    ipIds: [ip01.id],\n    image: \"ubuntu_jammy\",\n    type: \"PRO2-XXS\",\n    state: \"stopped\",\n});\nconst ipam01 = scaleway.ipam.getIpOutput({\n    resource: {\n        id: srv01.id,\n        type: \"instance_server\",\n    },\n    type: \"ipv6\",\n});\nconst tfAAAA = new scaleway.domain.Record(\"tf_AAAA\", {\n    dnsZone: \"example.com\",\n    name: \"\",\n    type: \"AAAA\",\n    data: std.cidrhost({\n        input: ipam01.apply(ipam01 =\u003e ipam01.addressCidr),\n        host: 42,\n    }).result,\n    ttl: 3600,\n    priority: 1,\n});\nconst base = new scaleway.ipam.IpReverseDns(\"base\", {\n    ipamIpId: ipam01.apply(ipam01 =\u003e ipam01.id),\n    hostname: \"example.com\",\n    address: std.cidrhost({\n        input: ipam01.apply(ipam01 =\u003e ipam01.addressCidr),\n        host: 42,\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nip01 = scaleway.instance.Ip(\"ip01\", type=\"routed_ipv6\")\nsrv01 = scaleway.instance.Server(\"srv01\",\n    name=\"tf-tests-instance-server-ips\",\n    ip_ids=[ip01.id],\n    image=\"ubuntu_jammy\",\n    type=\"PRO2-XXS\",\n    state=\"stopped\")\nipam01 = scaleway.ipam.get_ip_output(resource={\n        \"id\": srv01.id,\n        \"type\": \"instance_server\",\n    },\n    type=\"ipv6\")\ntf_aaaa = scaleway.domain.Record(\"tf_AAAA\",\n    dns_zone=\"example.com\",\n    name=\"\",\n    type=\"AAAA\",\n    data=std.cidrhost(input=ipam01.address_cidr,\n        host=42)[\"result\"],\n    ttl=3600,\n    priority=1)\nbase = scaleway.ipam.IpReverseDns(\"base\",\n    ipam_ip_id=ipam01.id,\n    hostname=\"example.com\",\n    address=std.cidrhost(input=ipam01.address_cidr,\n        host=42)[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip01 = new Scaleway.Instance.Ip(\"ip01\", new()\n    {\n        Type = \"routed_ipv6\",\n    });\n\n    var srv01 = new Scaleway.Instance.Server(\"srv01\", new()\n    {\n        Name = \"tf-tests-instance-server-ips\",\n        IpIds = new[]\n        {\n            ip01.Id,\n        },\n        Image = \"ubuntu_jammy\",\n        Type = \"PRO2-XXS\",\n        State = \"stopped\",\n    });\n\n    var ipam01 = Scaleway.Ipam.GetIp.Invoke(new()\n    {\n        Resource = new Scaleway.Ipam.Inputs.GetIpResourceInputArgs\n        {\n            Id = srv01.Id,\n            Type = \"instance_server\",\n        },\n        Type = \"ipv6\",\n    });\n\n    var tfAAAA = new Scaleway.Domain.Record(\"tf_AAAA\", new()\n    {\n        DnsZone = \"example.com\",\n        Name = \"\",\n        Type = \"AAAA\",\n        Data = Std.Cidrhost.Invoke(new()\n        {\n            Input = ipam01.Apply(getIpResult =\u003e getIpResult.AddressCidr),\n            Host = 42,\n        }).Result,\n        Ttl = 3600,\n        Priority = 1,\n    });\n\n    var @base = new Scaleway.Ipam.IpReverseDns(\"base\", new()\n    {\n        IpamIpId = ipam01.Apply(getIpResult =\u003e getIpResult.Id),\n        Hostname = \"example.com\",\n        Address = Std.Cidrhost.Invoke(new()\n        {\n            Input = ipam01.Apply(getIpResult =\u003e getIpResult.AddressCidr),\n            Host = 42,\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip01, err := instance.NewIp(ctx, \"ip01\", \u0026instance.IpArgs{\n\t\t\tType: pulumi.String(\"routed_ipv6\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsrv01, err := instance.NewServer(ctx, \"srv01\", \u0026instance.ServerArgs{\n\t\t\tName: pulumi.String(\"tf-tests-instance-server-ips\"),\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tip01.ID(),\n\t\t\t},\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"PRO2-XXS\"),\n\t\t\tState: pulumi.String(\"stopped\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tipam01 := ipam.LookupIpOutput(ctx, ipam.GetIpOutputArgs{\n\t\t\tResource: \u0026ipam.GetIpResourceArgs{\n\t\t\t\tId:   srv01.ID(),\n\t\t\t\tType: pulumi.String(\"instance_server\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"ipv6\"),\n\t\t}, nil)\n\t\tinvokeCidrhost, err := std.Cidrhost(ctx, map[string]interface{}{\n\t\t\t\"input\": ipam01.ApplyT(func(ipam01 ipam.GetIpResult) (*string, error) {\n\t\t\t\treturn \u0026ipam01.AddressCidr, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\"host\": 42,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"tf_AAAA\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"example.com\"),\n\t\t\tName:     pulumi.String(\"\"),\n\t\t\tType:     pulumi.String(\"AAAA\"),\n\t\t\tData:     invokeCidrhost.Result,\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(1),\n\t\t})\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\": ipam01.ApplyT(func(ipam01 ipam.GetIpResult) (*string, error) {\n\t\t\t\treturn \u0026ipam01.AddressCidr, nil\n\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\"host\": 42,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ipam.NewIpReverseDns(ctx, \"base\", \u0026ipam.IpReverseDnsArgs{\n\t\t\tIpamIpId: pulumi.String(ipam01.ApplyT(func(ipam01 ipam.GetIpResult) (*string, error) {\n\t\t\t\treturn \u0026ipam01.Id, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tHostname: pulumi.String(\"example.com\"),\n\t\t\tAddress:  invokeCidrhost1.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.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.IpArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.ipam.IpamFunctions;\nimport com.pulumi.scaleway.ipam.inputs.GetIpArgs;\nimport com.pulumi.scaleway.ipam.inputs.GetIpResourceArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.scaleway.ipam.IpReverseDns;\nimport com.pulumi.scaleway.ipam.IpReverseDnsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .type(\"routed_ipv6\")\n            .build());\n\n        var srv01 = new Server(\"srv01\", ServerArgs.builder()\n            .name(\"tf-tests-instance-server-ips\")\n            .ipIds(ip01.id())\n            .image(\"ubuntu_jammy\")\n            .type(\"PRO2-XXS\")\n            .state(\"stopped\")\n            .build());\n\n        final var ipam01 = IpamFunctions.getIp(GetIpArgs.builder()\n            .resource(GetIpResourceArgs.builder()\n                .id(srv01.id())\n                .type(\"instance_server\")\n                .build())\n            .type(\"ipv6\")\n            .build());\n\n        var tfAAAA = new Record(\"tfAAAA\", RecordArgs.builder()\n            .dnsZone(\"example.com\")\n            .name(\"\")\n            .type(\"AAAA\")\n            .data(StdFunctions.cidrhost(Map.ofEntries(\n                Map.entry(\"input\", ipam01.applyValue(_ipam01 -\u003e _ipam01.addressCidr())),\n                Map.entry(\"host\", 42)\n            )).result())\n            .ttl(3600)\n            .priority(1)\n            .build());\n\n        var base = new IpReverseDns(\"base\", IpReverseDnsArgs.builder()\n            .ipamIpId(ipam01.applyValue(_ipam01 -\u003e _ipam01.id()))\n            .hostname(\"example.com\")\n            .address(StdFunctions.cidrhost(Map.ofEntries(\n                Map.entry(\"input\", ipam01.applyValue(_ipam01 -\u003e _ipam01.addressCidr())),\n                Map.entry(\"host\", 42)\n            )).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip01:\n    type: scaleway:instance:Ip\n    properties:\n      type: routed_ipv6\n  srv01:\n    type: scaleway:instance:Server\n    properties:\n      name: tf-tests-instance-server-ips\n      ipIds:\n        - ${ip01.id}\n      image: ubuntu_jammy\n      type: PRO2-XXS\n      state: stopped\n  tfAAAA:\n    type: scaleway:domain:Record\n    name: tf_AAAA\n    properties:\n      dnsZone: example.com\n      name: \"\"\n      type: AAAA\n      data:\n        fn::invoke:\n          function: std:cidrhost\n          arguments:\n            input: ${ipam01.addressCidr}\n            host: 42\n          return: result\n      ttl: 3600\n      priority: 1\n  base:\n    type: scaleway:ipam:IpReverseDns\n    properties:\n      ipamIpId: ${ipam01.id}\n      hostname: example.com\n      address:\n        fn::invoke:\n          function: std:cidrhost\n          arguments:\n            input: ${ipam01.addressCidr}\n            host: 42\n          return: result\nvariables:\n  ipam01:\n    fn::invoke:\n      function: scaleway:ipam:getIp\n      arguments:\n        resource:\n          id: ${srv01.id}\n          type: instance_server\n        type: ipv6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPAM IP reverse DNS can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/ipamIpReverseDns:IpamIpReverseDns main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP corresponding to the hostname.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The reverse domain name.\n"
                },
                "ipamIpId": {
                    "type": "string",
                    "description": "The IPAM IP ID.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the IP reverse DNS.\n"
                }
            },
            "required": [
                "address",
                "hostname",
                "ipamIpId"
            ],
            "inputProperties": {
                "address": {
                    "type": "string",
                    "description": "The IP corresponding to the hostname.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The reverse domain name.\n"
                },
                "ipamIpId": {
                    "type": "string",
                    "description": "The IPAM IP ID.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the IP reverse DNS.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "address",
                "hostname",
                "ipamIpId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpamIpReverseDns resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The IP corresponding to the hostname.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The reverse domain name.\n"
                    },
                    "ipamIpId": {
                        "type": "string",
                        "description": "The IPAM IP ID.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the IP reverse DNS.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/ipamipreversedns.IpamIpReverseDns has been deprecated in favor of scaleway.ipam/ipreversedns.IpReverseDns"
        },
        "scaleway:index/jobDefinition:JobDefinition": {
            "description": "Creates and manages a Scaleway Serverless Job Definition. For more information, see the [Go API documentation](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/jobs/v1alpha1).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.job.Definition(\"main\", {\n    name: \"testjob\",\n    cpuLimit: 140,\n    memoryLimit: 256,\n    imageUri: \"docker.io/alpine:latest\",\n    command: \"ls\",\n    timeout: \"10m\",\n    env: {\n        foo: \"bar\",\n    },\n    cron: {\n        schedule: \"5 4 1 * *\",\n        timezone: \"Europe/Paris\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.job.Definition(\"main\",\n    name=\"testjob\",\n    cpu_limit=140,\n    memory_limit=256,\n    image_uri=\"docker.io/alpine:latest\",\n    command=\"ls\",\n    timeout=\"10m\",\n    env={\n        \"foo\": \"bar\",\n    },\n    cron={\n        \"schedule\": \"5 4 1 * *\",\n        \"timezone\": \"Europe/Paris\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Job.Definition(\"main\", new()\n    {\n        Name = \"testjob\",\n        CpuLimit = 140,\n        MemoryLimit = 256,\n        ImageUri = \"docker.io/alpine:latest\",\n        Command = \"ls\",\n        Timeout = \"10m\",\n        Env = \n        {\n            { \"foo\", \"bar\" },\n        },\n        Cron = new Scaleway.Job.Inputs.DefinitionCronArgs\n        {\n            Schedule = \"5 4 1 * *\",\n            Timezone = \"Europe/Paris\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/job\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := job.NewDefinition(ctx, \"main\", \u0026job.DefinitionArgs{\n\t\t\tName:        pulumi.String(\"testjob\"),\n\t\t\tCpuLimit:    pulumi.Int(140),\n\t\t\tMemoryLimit: pulumi.Int(256),\n\t\t\tImageUri:    pulumi.String(\"docker.io/alpine:latest\"),\n\t\t\tCommand:     pulumi.String(\"ls\"),\n\t\t\tTimeout:     pulumi.String(\"10m\"),\n\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCron: \u0026job.DefinitionCronArgs{\n\t\t\t\tSchedule: pulumi.String(\"5 4 1 * *\"),\n\t\t\t\tTimezone: pulumi.String(\"Europe/Paris\"),\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.scaleway.job.Definition;\nimport com.pulumi.scaleway.job.DefinitionArgs;\nimport com.pulumi.scaleway.job.inputs.DefinitionCronArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Definition(\"main\", DefinitionArgs.builder()\n            .name(\"testjob\")\n            .cpuLimit(140)\n            .memoryLimit(256)\n            .imageUri(\"docker.io/alpine:latest\")\n            .command(\"ls\")\n            .timeout(\"10m\")\n            .env(Map.of(\"foo\", \"bar\"))\n            .cron(DefinitionCronArgs.builder()\n                .schedule(\"5 4 1 * *\")\n                .timezone(\"Europe/Paris\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:job:Definition\n    properties:\n      name: testjob\n      cpuLimit: 140\n      memoryLimit: 256\n      imageUri: docker.io/alpine:latest\n      command: ls\n      timeout: 10m\n      env:\n        foo: bar\n      cron:\n        schedule: 5 4 1 * *\n        timezone: Europe/Paris\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Secret Reference\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.job.Definition(\"main\", {\n    name: \"testjob\",\n    cpuLimit: 140,\n    memoryLimit: 256,\n    imageUri: \"docker.io/alpine:latest\",\n    command: \"ls\",\n    timeout: \"10m\",\n    cron: {\n        schedule: \"5 4 1 * *\",\n        timezone: \"Europe/Paris\",\n    },\n    secretReferences: [\n        {\n            secretId: \"11111111-1111-1111-1111-111111111111\",\n            file: \"/home/dev/secret_file\",\n        },\n        {\n            secretId: jobSecret.id,\n            secretVersion: \"1\",\n            environment: \"FOO\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.job.Definition(\"main\",\n    name=\"testjob\",\n    cpu_limit=140,\n    memory_limit=256,\n    image_uri=\"docker.io/alpine:latest\",\n    command=\"ls\",\n    timeout=\"10m\",\n    cron={\n        \"schedule\": \"5 4 1 * *\",\n        \"timezone\": \"Europe/Paris\",\n    },\n    secret_references=[\n        {\n            \"secret_id\": \"11111111-1111-1111-1111-111111111111\",\n            \"file\": \"/home/dev/secret_file\",\n        },\n        {\n            \"secret_id\": job_secret[\"id\"],\n            \"secret_version\": \"1\",\n            \"environment\": \"FOO\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Job.Definition(\"main\", new()\n    {\n        Name = \"testjob\",\n        CpuLimit = 140,\n        MemoryLimit = 256,\n        ImageUri = \"docker.io/alpine:latest\",\n        Command = \"ls\",\n        Timeout = \"10m\",\n        Cron = new Scaleway.Job.Inputs.DefinitionCronArgs\n        {\n            Schedule = \"5 4 1 * *\",\n            Timezone = \"Europe/Paris\",\n        },\n        SecretReferences = new[]\n        {\n            new Scaleway.Job.Inputs.DefinitionSecretReferenceArgs\n            {\n                SecretId = \"11111111-1111-1111-1111-111111111111\",\n                File = \"/home/dev/secret_file\",\n            },\n            new Scaleway.Job.Inputs.DefinitionSecretReferenceArgs\n            {\n                SecretId = jobSecret.Id,\n                SecretVersion = \"1\",\n                Environment = \"FOO\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/job\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := job.NewDefinition(ctx, \"main\", \u0026job.DefinitionArgs{\n\t\t\tName:        pulumi.String(\"testjob\"),\n\t\t\tCpuLimit:    pulumi.Int(140),\n\t\t\tMemoryLimit: pulumi.Int(256),\n\t\t\tImageUri:    pulumi.String(\"docker.io/alpine:latest\"),\n\t\t\tCommand:     pulumi.String(\"ls\"),\n\t\t\tTimeout:     pulumi.String(\"10m\"),\n\t\t\tCron: \u0026job.DefinitionCronArgs{\n\t\t\t\tSchedule: pulumi.String(\"5 4 1 * *\"),\n\t\t\t\tTimezone: pulumi.String(\"Europe/Paris\"),\n\t\t\t},\n\t\t\tSecretReferences: job.DefinitionSecretReferenceArray{\n\t\t\t\t\u0026job.DefinitionSecretReferenceArgs{\n\t\t\t\t\tSecretId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\t\t\tFile:     pulumi.String(\"/home/dev/secret_file\"),\n\t\t\t\t},\n\t\t\t\t\u0026job.DefinitionSecretReferenceArgs{\n\t\t\t\t\tSecretId:      pulumi.Any(jobSecret.Id),\n\t\t\t\t\tSecretVersion: pulumi.String(\"1\"),\n\t\t\t\t\tEnvironment:   pulumi.String(\"FOO\"),\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.scaleway.job.Definition;\nimport com.pulumi.scaleway.job.DefinitionArgs;\nimport com.pulumi.scaleway.job.inputs.DefinitionCronArgs;\nimport com.pulumi.scaleway.job.inputs.DefinitionSecretReferenceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Definition(\"main\", DefinitionArgs.builder()\n            .name(\"testjob\")\n            .cpuLimit(140)\n            .memoryLimit(256)\n            .imageUri(\"docker.io/alpine:latest\")\n            .command(\"ls\")\n            .timeout(\"10m\")\n            .cron(DefinitionCronArgs.builder()\n                .schedule(\"5 4 1 * *\")\n                .timezone(\"Europe/Paris\")\n                .build())\n            .secretReferences(            \n                DefinitionSecretReferenceArgs.builder()\n                    .secretId(\"11111111-1111-1111-1111-111111111111\")\n                    .file(\"/home/dev/secret_file\")\n                    .build(),\n                DefinitionSecretReferenceArgs.builder()\n                    .secretId(jobSecret.id())\n                    .secretVersion(\"1\")\n                    .environment(\"FOO\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:job:Definition\n    properties:\n      name: testjob\n      cpuLimit: 140\n      memoryLimit: 256\n      imageUri: docker.io/alpine:latest\n      command: ls\n      timeout: 10m\n      cron:\n        schedule: 5 4 1 * *\n        timezone: Europe/Paris\n      secretReferences:\n        - secretId: 11111111-1111-1111-1111-111111111111\n          file: /home/dev/secret_file\n        - secretId: ${jobSecret.id}\n          secretVersion: '1'\n          environment: FOO\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerless Jobs can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/jobDefinition:JobDefinition job fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The arguments that will be passed to the startup command at runtime (in list of string format). Overrides the default arguments defined in the job image. Environment variables and secrets can be included, and will be expanded before the arguments are used.\n"
                },
                "command": {
                    "type": "string",
                    "description": "The command that will be run in the container if specified.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" startupCommand \" pulumi-lang-dotnet=\" StartupCommand \" pulumi-lang-go=\" startupCommand \" pulumi-lang-python=\" startup_command \" pulumi-lang-yaml=\" startupCommand \" pulumi-lang-java=\" startupCommand \"\u003e startupCommand \u003c/span\u003einstead"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container running the job.\n"
                },
                "cron": {
                    "$ref": "#/types/scaleway:index/JobDefinitionCron:JobDefinitionCron",
                    "description": "The cron configuration\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the job\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the container.\n"
                },
                "imageUri": {
                    "type": "string",
                    "description": "The uri of the container image that will be used for the job run.\n"
                },
                "localStorageCapacity": {
                    "type": "integer",
                    "description": "The local storage capacity of the job in MiB.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory computing resources in MB to allocate to each container running the job.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the job.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Job is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Job.\n"
                },
                "secretReferences": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/JobDefinitionSecretReference:JobDefinitionSecretReference"
                    },
                    "description": "A reference to a secret stored in Secret Manager.\n"
                },
                "startupCommands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The command (main executable or entrypoint script) that will be run in the container (in list of string format). Overrides the default command defined in the job image.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The job run timeout, in Go Time format (ex: \u003cspan pulumi-lang-nodejs=\"`2h30m25s`\" pulumi-lang-dotnet=\"`2h30m25s`\" pulumi-lang-go=\"`2h30m25s`\" pulumi-lang-python=\"`2h30m25s`\" pulumi-lang-yaml=\"`2h30m25s`\" pulumi-lang-java=\"`2h30m25s`\"\u003e`2h30m25s`\u003c/span\u003e)\n"
                }
            },
            "required": [
                "cpuLimit",
                "imageUri",
                "localStorageCapacity",
                "memoryLimit",
                "name",
                "projectId",
                "timeout"
            ],
            "inputProperties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The arguments that will be passed to the startup command at runtime (in list of string format). Overrides the default arguments defined in the job image. Environment variables and secrets can be included, and will be expanded before the arguments are used.\n"
                },
                "command": {
                    "type": "string",
                    "description": "The command that will be run in the container if specified.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" startupCommand \" pulumi-lang-dotnet=\" StartupCommand \" pulumi-lang-go=\" startupCommand \" pulumi-lang-python=\" startup_command \" pulumi-lang-yaml=\" startupCommand \" pulumi-lang-java=\" startupCommand \"\u003e startupCommand \u003c/span\u003einstead"
                },
                "cpuLimit": {
                    "type": "integer",
                    "description": "The amount of vCPU computing resources to allocate to each container running the job.\n"
                },
                "cron": {
                    "$ref": "#/types/scaleway:index/JobDefinitionCron:JobDefinitionCron",
                    "description": "The cron configuration\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the job\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The environment variables of the container.\n"
                },
                "imageUri": {
                    "type": "string",
                    "description": "The uri of the container image that will be used for the job run.\n"
                },
                "localStorageCapacity": {
                    "type": "integer",
                    "description": "The local storage capacity of the job in MiB.\n"
                },
                "memoryLimit": {
                    "type": "integer",
                    "description": "The memory computing resources in MB to allocate to each container running the job.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the job.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Job is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Job.\n",
                    "willReplaceOnChanges": true
                },
                "secretReferences": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/JobDefinitionSecretReference:JobDefinitionSecretReference"
                    },
                    "description": "A reference to a secret stored in Secret Manager.\n"
                },
                "startupCommands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The command (main executable or entrypoint script) that will be run in the container (in list of string format). Overrides the default command defined in the job image.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "The job run timeout, in Go Time format (ex: \u003cspan pulumi-lang-nodejs=\"`2h30m25s`\" pulumi-lang-dotnet=\"`2h30m25s`\" pulumi-lang-go=\"`2h30m25s`\" pulumi-lang-python=\"`2h30m25s`\" pulumi-lang-yaml=\"`2h30m25s`\" pulumi-lang-java=\"`2h30m25s`\"\u003e`2h30m25s`\u003c/span\u003e)\n"
                }
            },
            "requiredInputs": [
                "cpuLimit",
                "imageUri",
                "localStorageCapacity",
                "memoryLimit"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering JobDefinition resources.\n",
                "properties": {
                    "args": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The arguments that will be passed to the startup command at runtime (in list of string format). Overrides the default arguments defined in the job image. Environment variables and secrets can be included, and will be expanded before the arguments are used.\n"
                    },
                    "command": {
                        "type": "string",
                        "description": "The command that will be run in the container if specified.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" startupCommand \" pulumi-lang-dotnet=\" StartupCommand \" pulumi-lang-go=\" startupCommand \" pulumi-lang-python=\" startup_command \" pulumi-lang-yaml=\" startupCommand \" pulumi-lang-java=\" startupCommand \"\u003e startupCommand \u003c/span\u003einstead"
                    },
                    "cpuLimit": {
                        "type": "integer",
                        "description": "The amount of vCPU computing resources to allocate to each container running the job.\n"
                    },
                    "cron": {
                        "$ref": "#/types/scaleway:index/JobDefinitionCron:JobDefinitionCron",
                        "description": "The cron configuration\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the job\n"
                    },
                    "env": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The environment variables of the container.\n"
                    },
                    "imageUri": {
                        "type": "string",
                        "description": "The uri of the container image that will be used for the job run.\n"
                    },
                    "localStorageCapacity": {
                        "type": "integer",
                        "description": "The local storage capacity of the job in MiB.\n"
                    },
                    "memoryLimit": {
                        "type": "integer",
                        "description": "The memory computing resources in MB to allocate to each container running the job.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the job.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Job is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the Job.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretReferences": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/JobDefinitionSecretReference:JobDefinitionSecretReference"
                        },
                        "description": "A reference to a secret stored in Secret Manager.\n"
                    },
                    "startupCommands": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The command (main executable or entrypoint script) that will be run in the container (in list of string format). Overrides the default command defined in the job image.\n"
                    },
                    "timeout": {
                        "type": "string",
                        "description": "The job run timeout, in Go Time format (ex: \u003cspan pulumi-lang-nodejs=\"`2h30m25s`\" pulumi-lang-dotnet=\"`2h30m25s`\" pulumi-lang-go=\"`2h30m25s`\" pulumi-lang-python=\"`2h30m25s`\" pulumi-lang-yaml=\"`2h30m25s`\" pulumi-lang-java=\"`2h30m25s`\"\u003e`2h30m25s`\u003c/span\u003e)\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/jobdefinition.JobDefinition has been deprecated in favor of scaleway.job/definition.Definition"
        },
        "scaleway:index/keyManagerKey:KeyManagerKey": {
            "description": "Provides a Scaleway Key Manager Key resource.  \nThis resource allows you to create and manage cryptographic keys in Scaleway Key Manager (KMS).\n\n## Example Usage\n\n### Symmetric Encryption Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst symmetric = new scaleway.keymanager.Key(\"symmetric\", {\n    name: \"my-kms-key\",\n    region: \"fr-par\",\n    projectId: \"your-project-id\",\n    usage: \"symmetric_encryption\",\n    algorithm: \"aes_256_gcm\",\n    description: \"Key for encrypting secrets\",\n    tags: [\n        \"env:prod\",\n        \"kms\",\n    ],\n    unprotected: true,\n    rotationPolicy: {\n        rotationPeriod: \"720h\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsymmetric = scaleway.keymanager.Key(\"symmetric\",\n    name=\"my-kms-key\",\n    region=\"fr-par\",\n    project_id=\"your-project-id\",\n    usage=\"symmetric_encryption\",\n    algorithm=\"aes_256_gcm\",\n    description=\"Key for encrypting secrets\",\n    tags=[\n        \"env:prod\",\n        \"kms\",\n    ],\n    unprotected=True,\n    rotation_policy={\n        \"rotation_period\": \"720h\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var symmetric = new Scaleway.Keymanager.Key(\"symmetric\", new()\n    {\n        Name = \"my-kms-key\",\n        Region = \"fr-par\",\n        ProjectId = \"your-project-id\",\n        Usage = \"symmetric_encryption\",\n        Algorithm = \"aes_256_gcm\",\n        Description = \"Key for encrypting secrets\",\n        Tags = new[]\n        {\n            \"env:prod\",\n            \"kms\",\n        },\n        Unprotected = true,\n        RotationPolicy = new Scaleway.Keymanager.Inputs.KeyRotationPolicyArgs\n        {\n            RotationPeriod = \"720h\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/keymanager\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewKey(ctx, \"symmetric\", \u0026keymanager.KeyArgs{\n\t\t\tName:        pulumi.String(\"my-kms-key\"),\n\t\t\tRegion:      pulumi.String(\"fr-par\"),\n\t\t\tProjectId:   pulumi.String(\"your-project-id\"),\n\t\t\tUsage:       pulumi.String(\"symmetric_encryption\"),\n\t\t\tAlgorithm:   pulumi.String(\"aes_256_gcm\"),\n\t\t\tDescription: pulumi.String(\"Key for encrypting secrets\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"env:prod\"),\n\t\t\t\tpulumi.String(\"kms\"),\n\t\t\t},\n\t\t\tUnprotected: pulumi.Bool(true),\n\t\t\tRotationPolicy: \u0026keymanager.KeyRotationPolicyArgs{\n\t\t\t\tRotationPeriod: pulumi.String(\"720h\"),\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.scaleway.keymanager.Key;\nimport com.pulumi.scaleway.keymanager.KeyArgs;\nimport com.pulumi.scaleway.keymanager.inputs.KeyRotationPolicyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 symmetric = new Key(\"symmetric\", KeyArgs.builder()\n            .name(\"my-kms-key\")\n            .region(\"fr-par\")\n            .projectId(\"your-project-id\")\n            .usage(\"symmetric_encryption\")\n            .algorithm(\"aes_256_gcm\")\n            .description(\"Key for encrypting secrets\")\n            .tags(            \n                \"env:prod\",\n                \"kms\")\n            .unprotected(true)\n            .rotationPolicy(KeyRotationPolicyArgs.builder()\n                .rotationPeriod(\"720h\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  symmetric:\n    type: scaleway:keymanager:Key\n    properties:\n      name: my-kms-key\n      region: fr-par\n      projectId: your-project-id\n      usage: symmetric_encryption\n      algorithm: aes_256_gcm\n      description: Key for encrypting secrets\n      tags:\n        - env:prod\n        - kms\n      unprotected: true\n      rotationPolicy:\n        rotationPeriod: 720h\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Asymmetric Encryption Key with RSA-4096\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst rsa4096 = new scaleway.keymanager.Key(\"rsa_4096\", {\n    name: \"rsa-4096-key\",\n    region: \"fr-par\",\n    usage: \"asymmetric_encryption\",\n    algorithm: \"rsa_oaep_4096_sha256\",\n    description: \"Key for encrypting large files with RSA-4096\",\n    unprotected: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nrsa4096 = scaleway.keymanager.Key(\"rsa_4096\",\n    name=\"rsa-4096-key\",\n    region=\"fr-par\",\n    usage=\"asymmetric_encryption\",\n    algorithm=\"rsa_oaep_4096_sha256\",\n    description=\"Key for encrypting large files with RSA-4096\",\n    unprotected=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rsa4096 = new Scaleway.Keymanager.Key(\"rsa_4096\", new()\n    {\n        Name = \"rsa-4096-key\",\n        Region = \"fr-par\",\n        Usage = \"asymmetric_encryption\",\n        Algorithm = \"rsa_oaep_4096_sha256\",\n        Description = \"Key for encrypting large files with RSA-4096\",\n        Unprotected = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/keymanager\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewKey(ctx, \"rsa_4096\", \u0026keymanager.KeyArgs{\n\t\t\tName:        pulumi.String(\"rsa-4096-key\"),\n\t\t\tRegion:      pulumi.String(\"fr-par\"),\n\t\t\tUsage:       pulumi.String(\"asymmetric_encryption\"),\n\t\t\tAlgorithm:   pulumi.String(\"rsa_oaep_4096_sha256\"),\n\t\t\tDescription: pulumi.String(\"Key for encrypting large files with RSA-4096\"),\n\t\t\tUnprotected: 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.scaleway.keymanager.Key;\nimport com.pulumi.scaleway.keymanager.KeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rsa4096 = new Key(\"rsa4096\", KeyArgs.builder()\n            .name(\"rsa-4096-key\")\n            .region(\"fr-par\")\n            .usage(\"asymmetric_encryption\")\n            .algorithm(\"rsa_oaep_4096_sha256\")\n            .description(\"Key for encrypting large files with RSA-4096\")\n            .unprotected(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rsa4096:\n    type: scaleway:keymanager:Key\n    name: rsa_4096\n    properties:\n      name: rsa-4096-key\n      region: fr-par\n      usage: asymmetric_encryption\n      algorithm: rsa_oaep_4096_sha256\n      description: Key for encrypting large files with RSA-4096\n      unprotected: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Asymmetric Signing Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst signing = new scaleway.keymanager.Key(\"signing\", {\n    name: \"signing-key\",\n    region: \"fr-par\",\n    usage: \"asymmetric_signing\",\n    algorithm: \"rsa_pss_2048_sha256\",\n    description: \"Key for signing documents\",\n    unprotected: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsigning = scaleway.keymanager.Key(\"signing\",\n    name=\"signing-key\",\n    region=\"fr-par\",\n    usage=\"asymmetric_signing\",\n    algorithm=\"rsa_pss_2048_sha256\",\n    description=\"Key for signing documents\",\n    unprotected=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var signing = new Scaleway.Keymanager.Key(\"signing\", new()\n    {\n        Name = \"signing-key\",\n        Region = \"fr-par\",\n        Usage = \"asymmetric_signing\",\n        Algorithm = \"rsa_pss_2048_sha256\",\n        Description = \"Key for signing documents\",\n        Unprotected = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/keymanager\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewKey(ctx, \"signing\", \u0026keymanager.KeyArgs{\n\t\t\tName:        pulumi.String(\"signing-key\"),\n\t\t\tRegion:      pulumi.String(\"fr-par\"),\n\t\t\tUsage:       pulumi.String(\"asymmetric_signing\"),\n\t\t\tAlgorithm:   pulumi.String(\"rsa_pss_2048_sha256\"),\n\t\t\tDescription: pulumi.String(\"Key for signing documents\"),\n\t\t\tUnprotected: 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.scaleway.keymanager.Key;\nimport com.pulumi.scaleway.keymanager.KeyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 signing = new Key(\"signing\", KeyArgs.builder()\n            .name(\"signing-key\")\n            .region(\"fr-par\")\n            .usage(\"asymmetric_signing\")\n            .algorithm(\"rsa_pss_2048_sha256\")\n            .description(\"Key for signing documents\")\n            .unprotected(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  signing:\n    type: scaleway:keymanager:Key\n    properties:\n      name: signing-key\n      region: fr-par\n      usage: asymmetric_signing\n      algorithm: rsa_pss_2048_sha256\n      description: Key for signing documents\n      unprotected: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\n- **Protection**: By default, keys are protected and cannot be deleted. To allow deletion, set `unprotected = true` when creating the key.\n- **Rotation Policy**: The \u003cspan pulumi-lang-nodejs=\"`rotationPolicy`\" pulumi-lang-dotnet=\"`RotationPolicy`\" pulumi-lang-go=\"`rotationPolicy`\" pulumi-lang-python=\"`rotation_policy`\" pulumi-lang-yaml=\"`rotationPolicy`\" pulumi-lang-java=\"`rotationPolicy`\"\u003e`rotationPolicy`\u003c/span\u003e block allows you to set automatic rotation for your key.\n- **Origin**: The \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 argument is optional and defaults to \u003cspan pulumi-lang-nodejs=\"`scalewayKms`\" pulumi-lang-dotnet=\"`ScalewayKms`\" pulumi-lang-go=\"`scalewayKms`\" pulumi-lang-python=\"`scaleway_kms`\" pulumi-lang-yaml=\"`scalewayKms`\" pulumi-lang-java=\"`scalewayKms`\"\u003e`scalewayKms`\u003c/span\u003e. Use \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e if you want to import an external key (see Scaleway documentation for details).\n- **Project and Region**: If not specified, \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e and \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 will default to the provider configuration.\n- **Algorithm Validation**: The provider validates that the specified \u003cspan pulumi-lang-nodejs=\"`algorithm`\" pulumi-lang-dotnet=\"`Algorithm`\" pulumi-lang-go=\"`algorithm`\" pulumi-lang-python=\"`algorithm`\" pulumi-lang-yaml=\"`algorithm`\" pulumi-lang-java=\"`algorithm`\"\u003e`algorithm`\u003c/span\u003e is compatible with the \u003cspan pulumi-lang-nodejs=\"`usage`\" pulumi-lang-dotnet=\"`Usage`\" pulumi-lang-go=\"`usage`\" pulumi-lang-python=\"`usage`\" pulumi-lang-yaml=\"`usage`\" pulumi-lang-java=\"`usage`\"\u003e`usage`\u003c/span\u003e type at plan time, providing early feedback on configuration errors.\n\n## Import\n\nYou can import a key using its ID and region:\n\n```sh\n$ pulumi import scaleway:index/keyManagerKey:KeyManagerKey main fr-par/11111111-2222-3333-4444-555555555555\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "– The cryptographic algorithm to use. Valid values depend on the \u003cspan pulumi-lang-nodejs=\"`usage`\" pulumi-lang-dotnet=\"`Usage`\" pulumi-lang-go=\"`usage`\" pulumi-lang-python=\"`usage`\" pulumi-lang-yaml=\"`usage`\" pulumi-lang-java=\"`usage`\"\u003e`usage`\u003c/span\u003e:\n- For \u003cspan pulumi-lang-nodejs=\"`symmetricEncryption`\" pulumi-lang-dotnet=\"`SymmetricEncryption`\" pulumi-lang-go=\"`symmetricEncryption`\" pulumi-lang-python=\"`symmetric_encryption`\" pulumi-lang-yaml=\"`symmetricEncryption`\" pulumi-lang-java=\"`symmetricEncryption`\"\u003e`symmetricEncryption`\u003c/span\u003e:\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the key was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "– A description for the key.\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Whether the key is locked.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the key.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "– The origin of the key. Valid values are:\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "– The ID of the project the key belongs to.\n\n**Key Usage and Algorithm (both required):**\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Whether the key is protected from deletion.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region in which to create the key (e.g., `fr-par`).\n"
                },
                "rotatedAt": {
                    "type": "string",
                    "description": "The date and time when the key was last rotated.\n"
                },
                "rotationCount": {
                    "type": "integer",
                    "description": "The number of times the key has been rotated.\n"
                },
                "rotationPolicy": {
                    "$ref": "#/types/scaleway:index/KeyManagerKeyRotationPolicy:KeyManagerKeyRotationPolicy",
                    "description": "– Rotation policy for the key:\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the key (e.g., \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).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "– A list of tags to assign to the key.\n"
                },
                "unprotected": {
                    "type": "boolean",
                    "description": "– If \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 key can be deleted. 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 (protected).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the key was last updated.\n"
                },
                "usage": {
                    "type": "string",
                    "description": "– The usage type of the key. Valid values:\n"
                }
            },
            "required": [
                "algorithm",
                "createdAt",
                "locked",
                "name",
                "projectId",
                "protected",
                "rotatedAt",
                "rotationCount",
                "state",
                "updatedAt",
                "usage"
            ],
            "inputProperties": {
                "algorithm": {
                    "type": "string",
                    "description": "– The cryptographic algorithm to use. Valid values depend on the \u003cspan pulumi-lang-nodejs=\"`usage`\" pulumi-lang-dotnet=\"`Usage`\" pulumi-lang-go=\"`usage`\" pulumi-lang-python=\"`usage`\" pulumi-lang-yaml=\"`usage`\" pulumi-lang-java=\"`usage`\"\u003e`usage`\u003c/span\u003e:\n- For \u003cspan pulumi-lang-nodejs=\"`symmetricEncryption`\" pulumi-lang-dotnet=\"`SymmetricEncryption`\" pulumi-lang-go=\"`symmetricEncryption`\" pulumi-lang-python=\"`symmetric_encryption`\" pulumi-lang-yaml=\"`symmetricEncryption`\" pulumi-lang-java=\"`symmetricEncryption`\"\u003e`symmetricEncryption`\u003c/span\u003e:\n"
                },
                "description": {
                    "type": "string",
                    "description": "– A description for the key.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the key.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "– The origin of the key. Valid values are:\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "– The ID of the project the key belongs to.\n\n**Key Usage and Algorithm (both required):**\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region in which to create the key (e.g., `fr-par`).\n",
                    "willReplaceOnChanges": true
                },
                "rotationPolicy": {
                    "$ref": "#/types/scaleway:index/KeyManagerKeyRotationPolicy:KeyManagerKeyRotationPolicy",
                    "description": "– Rotation policy for the key:\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "– A list of tags to assign to the key.\n"
                },
                "unprotected": {
                    "type": "boolean",
                    "description": "– If \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 key can be deleted. 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 (protected).\n"
                },
                "usage": {
                    "type": "string",
                    "description": "– The usage type of the key. Valid values:\n"
                }
            },
            "requiredInputs": [
                "algorithm",
                "usage"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KeyManagerKey resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "description": "– The cryptographic algorithm to use. Valid values depend on the \u003cspan pulumi-lang-nodejs=\"`usage`\" pulumi-lang-dotnet=\"`Usage`\" pulumi-lang-go=\"`usage`\" pulumi-lang-python=\"`usage`\" pulumi-lang-yaml=\"`usage`\" pulumi-lang-java=\"`usage`\"\u003e`usage`\u003c/span\u003e:\n- For \u003cspan pulumi-lang-nodejs=\"`symmetricEncryption`\" pulumi-lang-dotnet=\"`SymmetricEncryption`\" pulumi-lang-go=\"`symmetricEncryption`\" pulumi-lang-python=\"`symmetric_encryption`\" pulumi-lang-yaml=\"`symmetricEncryption`\" pulumi-lang-java=\"`symmetricEncryption`\"\u003e`symmetricEncryption`\u003c/span\u003e:\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the key was created.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "– A description for the key.\n"
                    },
                    "locked": {
                        "type": "boolean",
                        "description": "Whether the key is locked.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the key.\n"
                    },
                    "origin": {
                        "type": "string",
                        "description": "– The origin of the key. Valid values are:\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "– The ID of the project the key belongs to.\n\n**Key Usage and Algorithm (both required):**\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Whether the key is protected from deletion.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region in which to create the key (e.g., `fr-par`).\n",
                        "willReplaceOnChanges": true
                    },
                    "rotatedAt": {
                        "type": "string",
                        "description": "The date and time when the key was last rotated.\n"
                    },
                    "rotationCount": {
                        "type": "integer",
                        "description": "The number of times the key has been rotated.\n"
                    },
                    "rotationPolicy": {
                        "$ref": "#/types/scaleway:index/KeyManagerKeyRotationPolicy:KeyManagerKeyRotationPolicy",
                        "description": "– Rotation policy for the key:\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the key (e.g., \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).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "– A list of tags to assign to the key.\n"
                    },
                    "unprotected": {
                        "type": "boolean",
                        "description": "– If \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 key can be deleted. 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 (protected).\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time when the key was last updated.\n"
                    },
                    "usage": {
                        "type": "string",
                        "description": "– The usage type of the key. Valid values:\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/keymanagerkey.KeyManagerKey has been deprecated in favor of scaleway.keymanager/key.Key"
        },
        "scaleway:index/kubernetesCluster:KubernetesCluster": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.kubernetes.Cluster`\" pulumi-lang-dotnet=\"`scaleway.kubernetes.Cluster`\" pulumi-lang-go=\"`kubernetes.Cluster`\" pulumi-lang-python=\"`kubernetes.Cluster`\" pulumi-lang-yaml=\"`scaleway.kubernetes.Cluster`\" pulumi-lang-java=\"`scaleway.kubernetes.Cluster`\"\u003e`scaleway.kubernetes.Cluster`\u003c/span\u003e resource allows you to create and manage Scaleway Kubernetes clusters.\n\nRefer to the Kubernetes [documentation](https://www.scaleway.com/en/docs/compute/kubernetes/) and [API documentation](https://www.scaleway.com/en/developers/api/kubernetes/) for more information.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    version: \"1.32.3\",\n    cni: \"cilium\",\n    privateNetworkId: pn.id,\n    deleteAdditionalResources: false,\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    clusterId: cluster.id,\n    name: \"tf-pool\",\n    nodeType: \"DEV1-M\",\n    size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.network.PrivateNetwork(\"pn\")\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    version=\"1.32.3\",\n    cni=\"cilium\",\n    private_network_id=pn.id,\n    delete_additional_resources=False)\npool = scaleway.kubernetes.Pool(\"pool\",\n    cluster_id=cluster.id,\n    name=\"tf-pool\",\n    node_type=\"DEV1-M\",\n    size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Version = \"1.32.3\",\n        Cni = \"cilium\",\n        PrivateNetworkId = pn.Id,\n        DeleteAdditionalResources = false,\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        ClusterId = cluster.Id,\n        Name = \"tf-pool\",\n        NodeType = \"DEV1-M\",\n        Size = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:                      pulumi.String(\"tf-cluster\"),\n\t\t\tVersion:                   pulumi.String(\"1.32.3\"),\n\t\t\tCni:                       pulumi.String(\"cilium\"),\n\t\t\tPrivateNetworkId:          pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tName:      pulumi.String(\"tf-pool\"),\n\t\t\tNodeType:  pulumi.String(\"DEV1-M\"),\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\treturn nil\n\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn = new PrivateNetwork(\"pn\");\n\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .version(\"1.32.3\")\n            .cni(\"cilium\")\n            .privateNetworkId(pn.id())\n            .deleteAdditionalResources(false)\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .clusterId(cluster.id())\n            .name(\"tf-pool\")\n            .nodeType(\"DEV1-M\")\n            .size(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn:\n    type: scaleway:network:PrivateNetwork\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      version: 1.32.3\n      cni: cilium\n      privateNetworkId: ${pn.id}\n      deleteAdditionalResources: false\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${cluster.id}\n      name: tf-pool\n      nodeType: DEV1-M\n      size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    description: \"cluster made in terraform\",\n    version: \"1.32.3\",\n    cni: \"calico\",\n    tags: [\"terraform\"],\n    privateNetworkId: pn.id,\n    deleteAdditionalResources: false,\n    autoscalerConfig: {\n        disableScaleDown: false,\n        scaleDownDelayAfterAdd: \"5m\",\n        estimator: \"binpacking\",\n        expander: \"random\",\n        ignoreDaemonsetsUtilization: true,\n        balanceSimilarNodeGroups: true,\n        expendablePodsPriorityCutoff: -5,\n    },\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    clusterId: cluster.id,\n    name: \"tf-pool\",\n    nodeType: \"DEV1-M\",\n    size: 3,\n    autoscaling: true,\n    autohealing: true,\n    minSize: 1,\n    maxSize: 5,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn = scaleway.network.PrivateNetwork(\"pn\")\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    description=\"cluster made in terraform\",\n    version=\"1.32.3\",\n    cni=\"calico\",\n    tags=[\"terraform\"],\n    private_network_id=pn.id,\n    delete_additional_resources=False,\n    autoscaler_config={\n        \"disable_scale_down\": False,\n        \"scale_down_delay_after_add\": \"5m\",\n        \"estimator\": \"binpacking\",\n        \"expander\": \"random\",\n        \"ignore_daemonsets_utilization\": True,\n        \"balance_similar_node_groups\": True,\n        \"expendable_pods_priority_cutoff\": -5,\n    })\npool = scaleway.kubernetes.Pool(\"pool\",\n    cluster_id=cluster.id,\n    name=\"tf-pool\",\n    node_type=\"DEV1-M\",\n    size=3,\n    autoscaling=True,\n    autohealing=True,\n    min_size=1,\n    max_size=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Description = \"cluster made in terraform\",\n        Version = \"1.32.3\",\n        Cni = \"calico\",\n        Tags = new[]\n        {\n            \"terraform\",\n        },\n        PrivateNetworkId = pn.Id,\n        DeleteAdditionalResources = false,\n        AutoscalerConfig = new Scaleway.Kubernetes.Inputs.ClusterAutoscalerConfigArgs\n        {\n            DisableScaleDown = false,\n            ScaleDownDelayAfterAdd = \"5m\",\n            Estimator = \"binpacking\",\n            Expander = \"random\",\n            IgnoreDaemonsetsUtilization = true,\n            BalanceSimilarNodeGroups = true,\n            ExpendablePodsPriorityCutoff = -5,\n        },\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        ClusterId = cluster.Id,\n        Name = \"tf-pool\",\n        NodeType = \"DEV1-M\",\n        Size = 3,\n        Autoscaling = true,\n        Autohealing = true,\n        MinSize = 1,\n        MaxSize = 5,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:        pulumi.String(\"tf-cluster\"),\n\t\t\tDescription: pulumi.String(\"cluster made in terraform\"),\n\t\t\tVersion:     pulumi.String(\"1.32.3\"),\n\t\t\tCni:         pulumi.String(\"calico\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tPrivateNetworkId:          pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t\tAutoscalerConfig: \u0026kubernetes.ClusterAutoscalerConfigArgs{\n\t\t\t\tDisableScaleDown:             pulumi.Bool(false),\n\t\t\t\tScaleDownDelayAfterAdd:       pulumi.String(\"5m\"),\n\t\t\t\tEstimator:                    pulumi.String(\"binpacking\"),\n\t\t\t\tExpander:                     pulumi.String(\"random\"),\n\t\t\t\tIgnoreDaemonsetsUtilization:  pulumi.Bool(true),\n\t\t\t\tBalanceSimilarNodeGroups:     pulumi.Bool(true),\n\t\t\t\tExpendablePodsPriorityCutoff: pulumi.Int(-5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId:   cluster.ID(),\n\t\t\tName:        pulumi.String(\"tf-pool\"),\n\t\t\tNodeType:    pulumi.String(\"DEV1-M\"),\n\t\t\tSize:        pulumi.Int(3),\n\t\t\tAutoscaling: pulumi.Bool(true),\n\t\t\tAutohealing: pulumi.Bool(true),\n\t\t\tMinSize:     pulumi.Int(1),\n\t\t\tMaxSize:     pulumi.Int(5),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.inputs.ClusterAutoscalerConfigArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn = new PrivateNetwork(\"pn\");\n\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .description(\"cluster made in terraform\")\n            .version(\"1.32.3\")\n            .cni(\"calico\")\n            .tags(\"terraform\")\n            .privateNetworkId(pn.id())\n            .deleteAdditionalResources(false)\n            .autoscalerConfig(ClusterAutoscalerConfigArgs.builder()\n                .disableScaleDown(false)\n                .scaleDownDelayAfterAdd(\"5m\")\n                .estimator(\"binpacking\")\n                .expander(\"random\")\n                .ignoreDaemonsetsUtilization(true)\n                .balanceSimilarNodeGroups(true)\n                .expendablePodsPriorityCutoff(-5)\n                .build())\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .clusterId(cluster.id())\n            .name(\"tf-pool\")\n            .nodeType(\"DEV1-M\")\n            .size(3)\n            .autoscaling(true)\n            .autohealing(true)\n            .minSize(1)\n            .maxSize(5)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn:\n    type: scaleway:network:PrivateNetwork\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      description: cluster made in terraform\n      version: 1.32.3\n      cni: calico\n      tags:\n        - terraform\n      privateNetworkId: ${pn.id}\n      deleteAdditionalResources: false\n      autoscalerConfig:\n        disableScaleDown: false\n        scaleDownDelayAfterAdd: 5m\n        estimator: binpacking\n        expander: random\n        ignoreDaemonsetsUtilization: true\n        balanceSimilarNodeGroups: true\n        expendablePodsPriorityCutoff: -5\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${cluster.id}\n      name: tf-pool\n      nodeType: DEV1-M\n      size: 3\n      autoscaling: true\n      autohealing: true\n      minSize: 1\n      maxSize: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as _null from \"@pulumi/null\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Example with an Helm provider\nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    version: \"1.29.1\",\n    cni: \"cilium\",\n    deleteAdditionalResources: false,\n    privateNetworkId: pn.id,\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    clusterId: cluster.id,\n    name: \"tf-pool\",\n    nodeType: \"DEV1-M\",\n    size: 1,\n});\nconst kubeconfig = new _null.Resource(\"kubeconfig\", {triggers: {\n    host: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].host),\n    token: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].token),\n    clusterCaCertificate: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].clusterCaCertificate),\n}}, {\n    dependsOn: [pool],\n});\nconst nginxIp = new scaleway.loadbalancers.Ip(\"nginx_ip\", {\n    zone: \"fr-par-1\",\n    projectId: cluster.projectId,\n});\nconst nginxIngress = new kubernetes.helm.sh/v3.Release(\"nginx_ingress\", {\n    name: \"nginx-ingress\",\n    namespace: \"kube-system\",\n    repositoryOpts: {\n        repo: \"https://kubernetes.github.io/ingress-nginx\",\n    },\n    chart: \"ingress-nginx\",\n    values: {\n        \"controller.service.loadBalancerIP\": nginxIp.ipAddress,\n        \"controller.config.use-proxy-protocol\": \"true\",\n        \"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-proxy-protocol-v2\": \"true\",\n        \"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-zone\": nginxIp.zone,\n        \"controller.service.externalTrafficPolicy\": \"Local\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_kubernetes as kubernetes\nimport pulumi_null as null\nimport pulumiverse_scaleway as scaleway\n\n# Example with an Helm provider\npn = scaleway.network.PrivateNetwork(\"pn\")\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    version=\"1.29.1\",\n    cni=\"cilium\",\n    delete_additional_resources=False,\n    private_network_id=pn.id)\npool = scaleway.kubernetes.Pool(\"pool\",\n    cluster_id=cluster.id,\n    name=\"tf-pool\",\n    node_type=\"DEV1-M\",\n    size=1)\nkubeconfig = null.Resource(\"kubeconfig\", triggers={\n    \"host\": cluster.kubeconfigs[0].host,\n    \"token\": cluster.kubeconfigs[0].token,\n    \"clusterCaCertificate\": cluster.kubeconfigs[0].cluster_ca_certificate,\n},\nopts = pulumi.ResourceOptions(depends_on=[pool]))\nnginx_ip = scaleway.loadbalancers.Ip(\"nginx_ip\",\n    zone=\"fr-par-1\",\n    project_id=cluster.project_id)\nnginx_ingress = kubernetes.helm_sh.v3.Release(\"nginx_ingress\",\n    name=nginx-ingress,\n    namespace=kube-system,\n    repository_opts={\n        repo: https://kubernetes.github.io/ingress-nginx,\n    },\n    chart=ingress-nginx,\n    values={\n        controller.service.loadBalancerIP: nginx_ip.ip_address,\n        controller.config.use-proxy-protocol: true,\n        controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-proxy-protocol-v2: true,\n        controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-zone: nginx_ip.zone,\n        controller.service.externalTrafficPolicy: Local,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Null = Pulumi.Null;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Example with an Helm provider\n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Version = \"1.29.1\",\n        Cni = \"cilium\",\n        DeleteAdditionalResources = false,\n        PrivateNetworkId = pn.Id,\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        ClusterId = cluster.Id,\n        Name = \"tf-pool\",\n        NodeType = \"DEV1-M\",\n        Size = 1,\n    });\n\n    var kubeconfig = new Null.Resource(\"kubeconfig\", new()\n    {\n        Triggers = \n        {\n            { \"host\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].Host) },\n            { \"token\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].Token) },\n            { \"clusterCaCertificate\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].ClusterCaCertificate) },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            pool,\n        },\n    });\n\n    var nginxIp = new Scaleway.Loadbalancers.Ip(\"nginx_ip\", new()\n    {\n        Zone = \"fr-par-1\",\n        ProjectId = cluster.ProjectId,\n    });\n\n    var nginxIngress = new Kubernetes.Helm.sh.V3.Release(\"nginx_ingress\", new()\n    {\n        Name = \"nginx-ingress\",\n        Namespace = \"kube-system\",\n        RepositoryOpts = \n        {\n            { \"repo\", \"https://kubernetes.github.io/ingress-nginx\" },\n        },\n        Chart = \"ingress-nginx\",\n        Values = \n        {\n            { \"controller.service.loadBalancerIP\", nginxIp.IpAddress },\n            { \"controller.config.use-proxy-protocol\", \"true\" },\n            { \"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-proxy-protocol-v2\", \"true\" },\n            { \"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-zone\", nginxIp.Zone },\n            { \"controller.service.externalTrafficPolicy\", \"Local\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes/helm.sh/v3\"\n\t\"github.com/pulumi/pulumi-null/sdk/go/null\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Example with an Helm provider\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:                      pulumi.String(\"tf-cluster\"),\n\t\t\tVersion:                   pulumi.String(\"1.29.1\"),\n\t\t\tCni:                       pulumi.String(\"cilium\"),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t\tPrivateNetworkId:          pn.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tName:      pulumi.String(\"tf-pool\"),\n\t\t\tNodeType:  pulumi.String(\"DEV1-M\"),\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 = null.NewResource(ctx, \"kubeconfig\", \u0026null.ResourceArgs{\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"host\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].Host, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t\t\"token\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].Token, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t\t\"clusterCaCertificate\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].ClusterCaCertificate, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpool,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnginxIp, err := loadbalancers.NewIp(ctx, \"nginx_ip\", \u0026loadbalancers.IpArgs{\n\t\t\tZone:      pulumi.String(\"fr-par-1\"),\n\t\t\tProjectId: cluster.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = helm.sh / v3.NewRelease(ctx, \"nginx_ingress\", \u0026helm.sh/v3.ReleaseArgs{\n\t\t\tName:      \"nginx-ingress\",\n\t\t\tNamespace: \"kube-system\",\n\t\t\tRepositoryOpts: map[string]interface{}{\n\t\t\t\t\"repo\": \"https://kubernetes.github.io/ingress-nginx\",\n\t\t\t},\n\t\t\tChart: \"ingress-nginx\",\n\t\t\tValues: map[string]interface{}{\n\t\t\t\t\"controller.service.loadBalancerIP\":    nginxIp.IpAddress,\n\t\t\t\t\"controller.config.use-proxy-protocol\": \"true\",\n\t\t\t\t\"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-proxy-protocol-v2\": \"true\",\n\t\t\t\t\"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-zone\":              nginxIp.Zone,\n\t\t\t\t\"controller.service.externalTrafficPolicy\":                                                           \"Local\",\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport com.pulumi.null.Resource;\nimport com.pulumi.null.ResourceArgs;\nimport com.pulumi.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.IpArgs;\nimport com.pulumi.kubernetes.helm.sh_v3.Release;\nimport com.pulumi.kubernetes.helm.sh_v3.ReleaseArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Example with an Helm provider\n        var pn = new PrivateNetwork(\"pn\");\n\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .version(\"1.29.1\")\n            .cni(\"cilium\")\n            .deleteAdditionalResources(false)\n            .privateNetworkId(pn.id())\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .clusterId(cluster.id())\n            .name(\"tf-pool\")\n            .nodeType(\"DEV1-M\")\n            .size(1)\n            .build());\n\n        var kubeconfig = new Resource(\"kubeconfig\", ResourceArgs.builder()\n            .triggers(Map.ofEntries(\n                Map.entry(\"host\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].host())),\n                Map.entry(\"token\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].token())),\n                Map.entry(\"clusterCaCertificate\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].clusterCaCertificate()))\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(pool)\n                .build());\n\n        var nginxIp = new Ip(\"nginxIp\", IpArgs.builder()\n            .zone(\"fr-par-1\")\n            .projectId(cluster.projectId())\n            .build());\n\n        var nginxIngress = new Release(\"nginxIngress\", ReleaseArgs.builder()\n            .name(\"nginx-ingress\")\n            .namespace(\"kube-system\")\n            .repositoryOpts(Map.of(\"repo\", \"https://kubernetes.github.io/ingress-nginx\"))\n            .chart(\"ingress-nginx\")\n            .values(Map.ofEntries(\n                Map.entry(\"controller.service.loadBalancerIP\", nginxIp.ipAddress()),\n                Map.entry(\"controller.config.use-proxy-protocol\", \"true\"),\n                Map.entry(\"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-proxy-protocol-v2\", \"true\"),\n                Map.entry(\"controller.service.annotations.service\\\\.beta\\\\.kubernetes\\\\.io/scw-loadbalancer-zone\", nginxIp.zone()),\n                Map.entry(\"controller.service.externalTrafficPolicy\", \"Local\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example with an Helm provider\n  pn:\n    type: scaleway:network:PrivateNetwork\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      version: 1.29.1\n      cni: cilium\n      deleteAdditionalResources: false\n      privateNetworkId: ${pn.id}\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${cluster.id}\n      name: tf-pool\n      nodeType: DEV1-M\n      size: 1\n  kubeconfig:\n    type: null:Resource\n    properties:\n      triggers:\n        host: ${cluster.kubeconfigs[0].host}\n        token: ${cluster.kubeconfigs[0].token}\n        clusterCaCertificate: ${cluster.kubeconfigs[0].clusterCaCertificate}\n    options:\n      dependsOn:\n        - ${pool}\n  nginxIp:\n    type: scaleway:loadbalancers:Ip\n    name: nginx_ip\n    properties:\n      zone: fr-par-1\n      projectId: ${cluster.projectId}\n  nginxIngress:\n    type: kubernetes:helm.sh/v3:Release\n    name: nginx_ingress\n    properties:\n      name: nginx-ingress\n      namespace: kube-system\n      repositoryOpts:\n        repo: https://kubernetes.github.io/ingress-nginx\n      chart: ingress-nginx\n      values:\n        controller.service.loadBalancerIP: ${nginxIp.ipAddress}\n        controller.config.use-proxy-protocol: 'true'\n        controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-proxy-protocol-v2: 'true'\n        controller.service.annotations.service\\.beta\\.kubernetes\\.io/scw-loadbalancer-zone: ${nginxIp.zone}\n        controller.service.externalTrafficPolicy: Local\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as _null from \"@pulumi/null\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Example with the kubernetes provider \nconst pn = new scaleway.network.PrivateNetwork(\"pn\", {});\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    version: \"1.29.1\",\n    cni: \"cilium\",\n    privateNetworkId: pn.id,\n    deleteAdditionalResources: false,\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    clusterId: cluster.id,\n    name: \"tf-pool\",\n    nodeType: \"DEV1-M\",\n    size: 1,\n});\n// The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n// It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\nconst kubeconfig = new _null.Resource(\"kubeconfig\", {triggers: {\n    host: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].host),\n    token: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].token),\n    clusterCaCertificate: cluster.kubeconfigs.apply(kubeconfigs =\u003e kubeconfigs[0].clusterCaCertificate),\n}}, {\n    dependsOn: [pool],\n});\n```\n```python\nimport pulumi\nimport pulumi_null as null\nimport pulumiverse_scaleway as scaleway\n\n# Example with the kubernetes provider \npn = scaleway.network.PrivateNetwork(\"pn\")\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    version=\"1.29.1\",\n    cni=\"cilium\",\n    private_network_id=pn.id,\n    delete_additional_resources=False)\npool = scaleway.kubernetes.Pool(\"pool\",\n    cluster_id=cluster.id,\n    name=\"tf-pool\",\n    node_type=\"DEV1-M\",\n    size=1)\n# The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n# It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\nkubeconfig = null.Resource(\"kubeconfig\", triggers={\n    \"host\": cluster.kubeconfigs[0].host,\n    \"token\": cluster.kubeconfigs[0].token,\n    \"clusterCaCertificate\": cluster.kubeconfigs[0].cluster_ca_certificate,\n},\nopts = pulumi.ResourceOptions(depends_on=[pool]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Null = Pulumi.Null;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Example with the kubernetes provider \n    var pn = new Scaleway.Network.PrivateNetwork(\"pn\");\n\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Version = \"1.29.1\",\n        Cni = \"cilium\",\n        PrivateNetworkId = pn.Id,\n        DeleteAdditionalResources = false,\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        ClusterId = cluster.Id,\n        Name = \"tf-pool\",\n        NodeType = \"DEV1-M\",\n        Size = 1,\n    });\n\n    // The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n    // It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\n    var kubeconfig = new Null.Resource(\"kubeconfig\", new()\n    {\n        Triggers = \n        {\n            { \"host\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].Host) },\n            { \"token\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].Token) },\n            { \"clusterCaCertificate\", cluster.Kubeconfigs.Apply(kubeconfigs =\u003e kubeconfigs[0].ClusterCaCertificate) },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            pool,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-null/sdk/go/null\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Example with the kubernetes provider\n\t\tpn, err := network.NewPrivateNetwork(ctx, \"pn\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:                      pulumi.String(\"tf-cluster\"),\n\t\t\tVersion:                   pulumi.String(\"1.29.1\"),\n\t\t\tCni:                       pulumi.String(\"cilium\"),\n\t\t\tPrivateNetworkId:          pn.ID(),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tName:      pulumi.String(\"tf-pool\"),\n\t\t\tNodeType:  pulumi.String(\"DEV1-M\"),\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// The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n\t\t// It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\n\t\t_, err = null.NewResource(ctx, \"kubeconfig\", \u0026null.ResourceArgs{\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"host\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].Host, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t\t\"token\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].Token, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t\t\"clusterCaCertificate\": pulumi.String(cluster.Kubeconfigs.ApplyT(func(kubeconfigs []kubernetes.ClusterKubeconfig) (*string, error) {\n\t\t\t\t\treturn \u0026kubeconfigs[0].ClusterCaCertificate, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpool,\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport com.pulumi.null.Resource;\nimport com.pulumi.null.ResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Example with the kubernetes provider \n        var pn = new PrivateNetwork(\"pn\");\n\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .version(\"1.29.1\")\n            .cni(\"cilium\")\n            .privateNetworkId(pn.id())\n            .deleteAdditionalResources(false)\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .clusterId(cluster.id())\n            .name(\"tf-pool\")\n            .nodeType(\"DEV1-M\")\n            .size(1)\n            .build());\n\n        // The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n        // It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\n        var kubeconfig = new Resource(\"kubeconfig\", ResourceArgs.builder()\n            .triggers(Map.ofEntries(\n                Map.entry(\"host\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].host())),\n                Map.entry(\"token\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].token())),\n                Map.entry(\"clusterCaCertificate\", cluster.kubeconfigs().applyValue(_kubeconfigs -\u003e _kubeconfigs[0].clusterCaCertificate()))\n            ))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(pool)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example with the kubernetes provider\n  pn:\n    type: scaleway:network:PrivateNetwork\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      version: 1.29.1\n      cni: cilium\n      privateNetworkId: ${pn.id}\n      deleteAdditionalResources: false\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${cluster.id}\n      name: tf-pool\n      nodeType: DEV1-M\n      size: 1\n  # The `null_resource` is needed because when the cluster is created, its status is `pool_required`, but the kubeconfig can already be downloaded.\n  # It leads the `kubernetes` provider to start creating its objects, but the DNS entry for the Kubernetes master is not yet ready, that's why it's needed to wait for at least a pool.\n  kubeconfig:\n    type: null:Resource\n    properties:\n      triggers:\n        host: ${cluster.kubeconfigs[0].host}\n        token: ${cluster.kubeconfigs[0].token}\n        clusterCaCertificate: ${cluster.kubeconfigs[0].clusterCaCertificate}\n    options:\n      dependsOn:\n        - ${pool}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Multicloud Kubernetes Cluster Example\n// For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    type: \"multicloud\",\n    version: \"1.32.3\",\n    cni: \"kilo\",\n    deleteAdditionalResources: false,\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    clusterId: cluster.id,\n    name: \"tf-pool\",\n    nodeType: \"external\",\n    size: 0,\n    minSize: 0,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n# Multicloud Kubernetes Cluster Example\n# For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    type=\"multicloud\",\n    version=\"1.32.3\",\n    cni=\"kilo\",\n    delete_additional_resources=False)\npool = scaleway.kubernetes.Pool(\"pool\",\n    cluster_id=cluster.id,\n    name=\"tf-pool\",\n    node_type=\"external\",\n    size=0,\n    min_size=0)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Multicloud Kubernetes Cluster Example\n    // For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Type = \"multicloud\",\n        Version = \"1.32.3\",\n        Cni = \"kilo\",\n        DeleteAdditionalResources = false,\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        ClusterId = cluster.Id,\n        Name = \"tf-pool\",\n        NodeType = \"external\",\n        Size = 0,\n        MinSize = 0,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Multicloud Kubernetes Cluster Example\n\t\t// For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:                      pulumi.String(\"tf-cluster\"),\n\t\t\tType:                      pulumi.String(\"multicloud\"),\n\t\t\tVersion:                   pulumi.String(\"1.32.3\"),\n\t\t\tCni:                       pulumi.String(\"kilo\"),\n\t\t\tDeleteAdditionalResources: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId: cluster.ID(),\n\t\t\tName:      pulumi.String(\"tf-pool\"),\n\t\t\tNodeType:  pulumi.String(\"external\"),\n\t\t\tSize:      pulumi.Int(0),\n\t\t\tMinSize:   pulumi.Int(0),\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.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Multicloud Kubernetes Cluster Example\n        // For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .type(\"multicloud\")\n            .version(\"1.32.3\")\n            .cni(\"kilo\")\n            .deleteAdditionalResources(false)\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .clusterId(cluster.id())\n            .name(\"tf-pool\")\n            .nodeType(\"external\")\n            .size(0)\n            .minSize(0)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Multicloud Kubernetes Cluster Example\n  # For a detailed example of how to add or run Elastic Metal servers instead of Instances on your cluster, please refer to [this guide](../guides/multicloud_cluster_with_baremetal_servers.md).\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      type: multicloud\n      version: 1.32.3\n      cni: kilo\n      deleteAdditionalResources: false\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${cluster.id}\n      name: tf-pool\n      nodeType: external\n      size: 0\n      minSize: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n\n\n## Deprecation of\u003cspan pulumi-lang-nodejs=\" defaultPool\n\" pulumi-lang-dotnet=\" DefaultPool\n\" pulumi-lang-go=\" defaultPool\n\" pulumi-lang-python=\" default_pool\n\" pulumi-lang-yaml=\" defaultPool\n\" pulumi-lang-java=\" defaultPool\n\"\u003e defaultPool\n\u003c/span\u003e\n\u003cspan pulumi-lang-nodejs=\"`defaultPool`\" pulumi-lang-dotnet=\"`DefaultPool`\" pulumi-lang-go=\"`defaultPool`\" pulumi-lang-python=\"`default_pool`\" pulumi-lang-yaml=\"`defaultPool`\" pulumi-lang-java=\"`defaultPool`\"\u003e`defaultPool`\u003c/span\u003e is deprecated in favour the \u003cspan pulumi-lang-nodejs=\"`scaleway.kubernetes.Pool`\" pulumi-lang-dotnet=\"`scaleway.kubernetes.Pool`\" pulumi-lang-go=\"`kubernetes.Pool`\" pulumi-lang-python=\"`kubernetes.Pool`\" pulumi-lang-yaml=\"`scaleway.kubernetes.Pool`\" pulumi-lang-java=\"`scaleway.kubernetes.Pool`\"\u003e`scaleway.kubernetes.Pool`\u003c/span\u003e resource. Here is a migration example.\n\nBefore:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    version: \"1.18.0\",\n    cni: \"cilium\",\n    defaultPool: [{\n        nodeType: \"DEV1-M\",\n        size: 1,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    version=\"1.18.0\",\n    cni=\"cilium\",\n    default_pool=[{\n        \"nodeType\": \"DEV1-M\",\n        \"size\": 1,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Version = \"1.18.0\",\n        Cni = \"cilium\",\n        DefaultPool = new[]\n        {\n            \n            {\n                { \"nodeType\", \"DEV1-M\" },\n                { \"size\", 1 },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:    pulumi.String(\"tf-cluster\"),\n\t\t\tVersion: pulumi.String(\"1.18.0\"),\n\t\t\tCni:     pulumi.String(\"cilium\"),\n\t\t\tDefaultPool: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"nodeType\": \"DEV1-M\",\n\t\t\t\t\t\"size\":     1,\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.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .version(\"1.18.0\")\n            .cni(\"cilium\")\n            .defaultPool(Arrays.asList(Map.ofEntries(\n                Map.entry(\"nodeType\", \"DEV1-M\"),\n                Map.entry(\"size\", 1)\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      version: 1.18.0\n      cni: cilium\n      defaultPool:\n        - nodeType: DEV1-M\n          size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nAfter:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"tf-cluster\",\n    version: \"1.18.0\",\n    cni: \"cilium\",\n});\nconst _default = new scaleway.kubernetes.Pool(\"default\", {\n    clusterId: jack.id,\n    name: \"default\",\n    nodeType: \"DEV1-M\",\n    size: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"tf-cluster\",\n    version=\"1.18.0\",\n    cni=\"cilium\")\ndefault = scaleway.kubernetes.Pool(\"default\",\n    cluster_id=jack[\"id\"],\n    name=\"default\",\n    node_type=\"DEV1-M\",\n    size=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"tf-cluster\",\n        Version = \"1.18.0\",\n        Cni = \"cilium\",\n    });\n\n    var @default = new Scaleway.Kubernetes.Pool(\"default\", new()\n    {\n        ClusterId = jack.Id,\n        Name = \"default\",\n        NodeType = \"DEV1-M\",\n        Size = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:    pulumi.String(\"tf-cluster\"),\n\t\t\tVersion: pulumi.String(\"1.18.0\"),\n\t\t\tCni:     pulumi.String(\"cilium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPool(ctx, \"default\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId: pulumi.Any(jack.Id),\n\t\t\tName:      pulumi.String(\"default\"),\n\t\t\tNodeType:  pulumi.String(\"DEV1-M\"),\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\treturn nil\n\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.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"tf-cluster\")\n            .version(\"1.18.0\")\n            .cni(\"cilium\")\n            .build());\n\n        var default_ = new Pool(\"default\", PoolArgs.builder()\n            .clusterId(jack.id())\n            .name(\"default\")\n            .nodeType(\"DEV1-M\")\n            .size(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: tf-cluster\n      version: 1.18.0\n      cni: cilium\n  default:\n    type: scaleway:kubernetes:Pool\n    properties:\n      clusterId: ${jack.id}\n      name: default\n      nodeType: DEV1-M\n      size: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOnce you have moved all the \u003cspan pulumi-lang-nodejs=\"`defaultPool`\" pulumi-lang-dotnet=\"`DefaultPool`\" pulumi-lang-go=\"`defaultPool`\" pulumi-lang-python=\"`default_pool`\" pulumi-lang-yaml=\"`defaultPool`\" pulumi-lang-java=\"`defaultPool`\"\u003e`defaultPool`\u003c/span\u003e into their own object, you will need to import them. If your pool had the ID 11111111-1111-1111-1111-111111111111 in the `fr-par` region, you can import it by typing:\n\n```bash\nterraform import scaleway_k8s_pool.default fr-par/11111111-1111-1111-1111-111111111111\n```\n\nThen you will only need to type `pulumi up` to have a smooth migration.\n\n## Import\n\nKubernetes clusters can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/kubernetesCluster:KubernetesCluster mycluster fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "admissionPlugins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.\n"
                },
                "apiserverCertSans": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Additional Subject Alternative Names for the Kubernetes API server certificate\n"
                },
                "apiserverUrl": {
                    "type": "string",
                    "description": "The URL of the Kubernetes API server.\n"
                },
                "autoUpgrade": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterAutoUpgrade:KubernetesClusterAutoUpgrade",
                    "description": "The auto upgrade configuration.\n"
                },
                "autoscalerConfig": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterAutoscalerConfig:KubernetesClusterAutoscalerConfig",
                    "description": "The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).\n"
                },
                "cni": {
                    "type": "string",
                    "description": "The Container Network Interface (CNI) for the Kubernetes cluster.\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The creation date of the cluster.\n"
                },
                "deleteAdditionalResources": {
                    "type": "boolean",
                    "description": "Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.\n\u003e **Important:** Setting this field 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 means that you will lose all your cluster data and network configuration when you delete your cluster.\nIf you prefer keeping it, you should instead set it as \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"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the Kubernetes cluster.\n"
                },
                "featureGates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.\n"
                },
                "kubeconfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/KubernetesClusterKubeconfig:KubernetesClusterKubeconfig"
                    },
                    "description": "The kubeconfig configuration file of the Kubernetes cluster",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "The name for the Kubernetes cluster.\n"
                },
                "openIdConnectConfig": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterOpenIdConnectConfig:KubernetesClusterOpenIdConnectConfig",
                    "description": "The OpenID Connect configuration of the cluster\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the cluster is associated with.\n"
                },
                "podCidr": {
                    "type": "string",
                    "description": "The subnet used for the Pod CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network of the cluster.\n\n\u003e **Important:** Changes to this field will recreate a new resource.\n\n\u003e **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e set),\nyou can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cluster is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the cluster should be created.\n"
                },
                "serviceCidr": {
                    "type": "string",
                    "description": "The subnet used for the Service CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n"
                },
                "serviceDnsIp": {
                    "type": "string",
                    "description": "The IP used for the DNS Service. If unset, defaults to Service CIDR's network + 10.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the Kubernetes cluster.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Kubernetes cluster.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of Kubernetes cluster. Possible values are:\n\n- for mutualized clusters: \u003cspan pulumi-lang-nodejs=\"`kapsule`\" pulumi-lang-dotnet=\"`Kapsule`\" pulumi-lang-go=\"`kapsule`\" pulumi-lang-python=\"`kapsule`\" pulumi-lang-yaml=\"`kapsule`\" pulumi-lang-java=\"`kapsule`\"\u003e`kapsule`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`multicloud`\" pulumi-lang-dotnet=\"`Multicloud`\" pulumi-lang-go=\"`multicloud`\" pulumi-lang-python=\"`multicloud`\" pulumi-lang-yaml=\"`multicloud`\" pulumi-lang-java=\"`multicloud`\"\u003e`multicloud`\u003c/span\u003e\n\n- for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.\n\n- for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The last update date of the cluster.\n"
                },
                "upgradeAvailable": {
                    "type": "boolean",
                    "description": "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 if a newer Kubernetes version is available.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the Kubernetes cluster.\n"
                },
                "wildcardDns": {
                    "type": "string",
                    "description": "The DNS wildcard that points to all ready nodes.\n"
                }
            },
            "required": [
                "apiserverUrl",
                "autoUpgrade",
                "autoscalerConfig",
                "cni",
                "createdAt",
                "deleteAdditionalResources",
                "kubeconfigs",
                "name",
                "openIdConnectConfig",
                "organizationId",
                "podCidr",
                "projectId",
                "serviceCidr",
                "serviceDnsIp",
                "status",
                "type",
                "updatedAt",
                "upgradeAvailable",
                "version",
                "wildcardDns"
            ],
            "inputProperties": {
                "admissionPlugins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.\n"
                },
                "apiserverCertSans": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Additional Subject Alternative Names for the Kubernetes API server certificate\n"
                },
                "autoUpgrade": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterAutoUpgrade:KubernetesClusterAutoUpgrade",
                    "description": "The auto upgrade configuration.\n"
                },
                "autoscalerConfig": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterAutoscalerConfig:KubernetesClusterAutoscalerConfig",
                    "description": "The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).\n"
                },
                "cni": {
                    "type": "string",
                    "description": "The Container Network Interface (CNI) for the Kubernetes cluster.\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "deleteAdditionalResources": {
                    "type": "boolean",
                    "description": "Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.\n\u003e **Important:** Setting this field 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 means that you will lose all your cluster data and network configuration when you delete your cluster.\nIf you prefer keeping it, you should instead set it as \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"
                },
                "description": {
                    "type": "string",
                    "description": "A description for the Kubernetes cluster.\n"
                },
                "featureGates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the Kubernetes cluster.\n"
                },
                "openIdConnectConfig": {
                    "$ref": "#/types/scaleway:index/KubernetesClusterOpenIdConnectConfig:KubernetesClusterOpenIdConnectConfig",
                    "description": "The OpenID Connect configuration of the cluster\n"
                },
                "podCidr": {
                    "type": "string",
                    "description": "The subnet used for the Pod CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                    "willReplaceOnChanges": true
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network of the cluster.\n\n\u003e **Important:** Changes to this field will recreate a new resource.\n\n\u003e **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e set),\nyou can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cluster is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the cluster should be created.\n",
                    "willReplaceOnChanges": true
                },
                "serviceCidr": {
                    "type": "string",
                    "description": "The subnet used for the Service CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                    "willReplaceOnChanges": true
                },
                "serviceDnsIp": {
                    "type": "string",
                    "description": "The IP used for the DNS Service. If unset, defaults to Service CIDR's network + 10.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Kubernetes cluster.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of Kubernetes cluster. Possible values are:\n\n- for mutualized clusters: \u003cspan pulumi-lang-nodejs=\"`kapsule`\" pulumi-lang-dotnet=\"`Kapsule`\" pulumi-lang-go=\"`kapsule`\" pulumi-lang-python=\"`kapsule`\" pulumi-lang-yaml=\"`kapsule`\" pulumi-lang-java=\"`kapsule`\"\u003e`kapsule`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`multicloud`\" pulumi-lang-dotnet=\"`Multicloud`\" pulumi-lang-go=\"`multicloud`\" pulumi-lang-python=\"`multicloud`\" pulumi-lang-yaml=\"`multicloud`\" pulumi-lang-java=\"`multicloud`\"\u003e`multicloud`\u003c/span\u003e\n\n- for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.\n\n- for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the Kubernetes cluster.\n"
                }
            },
            "requiredInputs": [
                "cni",
                "deleteAdditionalResources",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KubernetesCluster resources.\n",
                "properties": {
                    "admissionPlugins": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of [admission plugins](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/) to enable on the cluster.\n"
                    },
                    "apiserverCertSans": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Additional Subject Alternative Names for the Kubernetes API server certificate\n"
                    },
                    "apiserverUrl": {
                        "type": "string",
                        "description": "The URL of the Kubernetes API server.\n"
                    },
                    "autoUpgrade": {
                        "$ref": "#/types/scaleway:index/KubernetesClusterAutoUpgrade:KubernetesClusterAutoUpgrade",
                        "description": "The auto upgrade configuration.\n"
                    },
                    "autoscalerConfig": {
                        "$ref": "#/types/scaleway:index/KubernetesClusterAutoscalerConfig:KubernetesClusterAutoscalerConfig",
                        "description": "The configuration options for the [Kubernetes cluster autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler).\n"
                    },
                    "cni": {
                        "type": "string",
                        "description": "The Container Network Interface (CNI) for the Kubernetes cluster.\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The creation date of the cluster.\n"
                    },
                    "deleteAdditionalResources": {
                        "type": "boolean",
                        "description": "Delete additional resources like block volumes, load-balancers and the cluster's private network (if empty) that were created in Kubernetes on cluster deletion.\n\u003e **Important:** Setting this field 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 means that you will lose all your cluster data and network configuration when you delete your cluster.\nIf you prefer keeping it, you should instead set it as \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"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description for the Kubernetes cluster.\n"
                    },
                    "featureGates": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of [feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/) to enable on the cluster.\n"
                    },
                    "kubeconfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/KubernetesClusterKubeconfig:KubernetesClusterKubeconfig"
                        },
                        "description": "The kubeconfig configuration file of the Kubernetes cluster",
                        "secret": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the Kubernetes cluster.\n"
                    },
                    "openIdConnectConfig": {
                        "$ref": "#/types/scaleway:index/KubernetesClusterOpenIdConnectConfig:KubernetesClusterOpenIdConnectConfig",
                        "description": "The OpenID Connect configuration of the cluster\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the cluster is associated with.\n"
                    },
                    "podCidr": {
                        "type": "string",
                        "description": "The subnet used for the Pod CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                        "willReplaceOnChanges": true
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the private network of the cluster.\n\n\u003e **Important:** Changes to this field will recreate a new resource.\n\n\u003e **Important:** Private Networks are now mandatory with Kapsule Clusters. If you have a legacy cluster (no \u003cspan pulumi-lang-nodejs=\"`privateNetworkId`\" pulumi-lang-dotnet=\"`PrivateNetworkId`\" pulumi-lang-go=\"`privateNetworkId`\" pulumi-lang-python=\"`private_network_id`\" pulumi-lang-yaml=\"`privateNetworkId`\" pulumi-lang-java=\"`privateNetworkId`\"\u003e`privateNetworkId`\u003c/span\u003e set),\nyou can still set it now. In this case it will not destroy and recreate your cluster but migrate it to the Private Network.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the cluster is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the cluster should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "serviceCidr": {
                        "type": "string",
                        "description": "The subnet used for the Service CIDR.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                        "willReplaceOnChanges": true
                    },
                    "serviceDnsIp": {
                        "type": "string",
                        "description": "The IP used for the DNS Service. If unset, defaults to Service CIDR's network + 10.\n\n\u003e **Important:** Changes to this field will recreate a new resource. However once it has been set to a custom value,\nunsetting it to go back to the default value will not have any effect.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the Kubernetes cluster.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Kubernetes cluster.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of Kubernetes cluster. Possible values are:\n\n- for mutualized clusters: \u003cspan pulumi-lang-nodejs=\"`kapsule`\" pulumi-lang-dotnet=\"`Kapsule`\" pulumi-lang-go=\"`kapsule`\" pulumi-lang-python=\"`kapsule`\" pulumi-lang-yaml=\"`kapsule`\" pulumi-lang-java=\"`kapsule`\"\u003e`kapsule`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`multicloud`\" pulumi-lang-dotnet=\"`Multicloud`\" pulumi-lang-go=\"`multicloud`\" pulumi-lang-python=\"`multicloud`\" pulumi-lang-yaml=\"`multicloud`\" pulumi-lang-java=\"`multicloud`\"\u003e`multicloud`\u003c/span\u003e\n\n- for dedicated Kapsule clusters: `kapsule-dedicated-4`, `kapsule-dedicated-8` or `kapsule-dedicated-16`.\n\n- for dedicated Kosmos clusters: `multicloud-dedicated-4`, `multicloud-dedicated-8` or `multicloud-dedicated-16`.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The last update date of the cluster.\n"
                    },
                    "upgradeAvailable": {
                        "type": "boolean",
                        "description": "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 if a newer Kubernetes version is available.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "The version of the Kubernetes cluster.\n"
                    },
                    "wildcardDns": {
                        "type": "string",
                        "description": "The DNS wildcard that points to all ready nodes.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/kubernetescluster.KubernetesCluster has been deprecated in favor of scaleway.kubernetes/cluster.Cluster"
        },
        "scaleway:index/kubernetesNodePool:KubernetesNodePool": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.kubernetes.Pool`\" pulumi-lang-dotnet=\"`scaleway.kubernetes.Pool`\" pulumi-lang-go=\"`kubernetes.Pool`\" pulumi-lang-python=\"`kubernetes.Pool`\" pulumi-lang-yaml=\"`scaleway.kubernetes.Pool`\" pulumi-lang-java=\"`scaleway.kubernetes.Pool`\"\u003e`scaleway.kubernetes.Pool`\u003c/span\u003e resource allows you to create and manage Scaleway Kubernetes cluster pools.\n\nRefer to the Kubernetes [documentation](https://www.scaleway.com/en/docs/compute/kubernetes/) and [API documentation](https://www.scaleway.com/en/developers/api/kubernetes/) for more information.\n\n\n\n## Placement Group\n\nIf you are working with cluster type \u003cspan pulumi-lang-nodejs=\"`multicloud`\" pulumi-lang-dotnet=\"`Multicloud`\" pulumi-lang-go=\"`multicloud`\" pulumi-lang-python=\"`multicloud`\" pulumi-lang-yaml=\"`multicloud`\" pulumi-lang-java=\"`multicloud`\"\u003e`multicloud`\u003c/span\u003e please set the \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e where your placement group is e.g:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst placementGroup = new scaleway.instance.PlacementGroup(\"placement_group\", {\n    name: \"pool-placement-group\",\n    policyType: \"max_availability\",\n    policyMode: \"optional\",\n    zone: \"nl-ams-1\",\n});\nconst cluster = new scaleway.kubernetes.Cluster(\"cluster\", {\n    name: \"placement_group\",\n    cni: \"kilo\",\n    version: \"1.32.3\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_k8s_cluster\",\n        \"placement_group\",\n    ],\n    region: \"fr-par\",\n    type: \"multicloud\",\n});\nconst pool = new scaleway.kubernetes.Pool(\"pool\", {\n    name: \"placement_group\",\n    clusterId: cluster.id,\n    nodeType: \"gp1_xs\",\n    placementGroupId: placementGroup.id,\n    size: 1,\n    region: cluster.region,\n    zone: placementGroup.zone,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nplacement_group = scaleway.instance.PlacementGroup(\"placement_group\",\n    name=\"pool-placement-group\",\n    policy_type=\"max_availability\",\n    policy_mode=\"optional\",\n    zone=\"nl-ams-1\")\ncluster = scaleway.kubernetes.Cluster(\"cluster\",\n    name=\"placement_group\",\n    cni=\"kilo\",\n    version=\"1.32.3\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_k8s_cluster\",\n        \"placement_group\",\n    ],\n    region=\"fr-par\",\n    type=\"multicloud\")\npool = scaleway.kubernetes.Pool(\"pool\",\n    name=\"placement_group\",\n    cluster_id=cluster.id,\n    node_type=\"gp1_xs\",\n    placement_group_id=placement_group.id,\n    size=1,\n    region=cluster.region,\n    zone=placement_group.zone)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var placementGroup = new Scaleway.Instance.PlacementGroup(\"placement_group\", new()\n    {\n        Name = \"pool-placement-group\",\n        PolicyType = \"max_availability\",\n        PolicyMode = \"optional\",\n        Zone = \"nl-ams-1\",\n    });\n\n    var cluster = new Scaleway.Kubernetes.Cluster(\"cluster\", new()\n    {\n        Name = \"placement_group\",\n        Cni = \"kilo\",\n        Version = \"1.32.3\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_k8s_cluster\",\n            \"placement_group\",\n        },\n        Region = \"fr-par\",\n        Type = \"multicloud\",\n    });\n\n    var pool = new Scaleway.Kubernetes.Pool(\"pool\", new()\n    {\n        Name = \"placement_group\",\n        ClusterId = cluster.Id,\n        NodeType = \"gp1_xs\",\n        PlacementGroupId = placementGroup.Id,\n        Size = 1,\n        Region = cluster.Region,\n        Zone = placementGroup.Zone,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tplacementGroup, err := instance.NewPlacementGroup(ctx, \"placement_group\", \u0026instance.PlacementGroupArgs{\n\t\t\tName:       pulumi.String(\"pool-placement-group\"),\n\t\t\tPolicyType: pulumi.String(\"max_availability\"),\n\t\t\tPolicyMode: pulumi.String(\"optional\"),\n\t\t\tZone:       pulumi.String(\"nl-ams-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := kubernetes.NewCluster(ctx, \"cluster\", \u0026kubernetes.ClusterArgs{\n\t\t\tName:    pulumi.String(\"placement_group\"),\n\t\t\tCni:     pulumi.String(\"kilo\"),\n\t\t\tVersion: pulumi.String(\"1.32.3\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_k8s_cluster\"),\n\t\t\t\tpulumi.String(\"placement_group\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t\tType:   pulumi.String(\"multicloud\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewPool(ctx, \"pool\", \u0026kubernetes.PoolArgs{\n\t\t\tName:             pulumi.String(\"placement_group\"),\n\t\t\tClusterId:        cluster.ID(),\n\t\t\tNodeType:         pulumi.String(\"gp1_xs\"),\n\t\t\tPlacementGroupId: placementGroup.ID(),\n\t\t\tSize:             pulumi.Int(1),\n\t\t\tRegion:           cluster.Region,\n\t\t\tZone:             placementGroup.Zone,\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.scaleway.instance.PlacementGroup;\nimport com.pulumi.scaleway.instance.PlacementGroupArgs;\nimport com.pulumi.scaleway.kubernetes.Cluster;\nimport com.pulumi.scaleway.kubernetes.ClusterArgs;\nimport com.pulumi.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 placementGroup = new PlacementGroup(\"placementGroup\", PlacementGroupArgs.builder()\n            .name(\"pool-placement-group\")\n            .policyType(\"max_availability\")\n            .policyMode(\"optional\")\n            .zone(\"nl-ams-1\")\n            .build());\n\n        var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n            .name(\"placement_group\")\n            .cni(\"kilo\")\n            .version(\"1.32.3\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_k8s_cluster\",\n                \"placement_group\")\n            .region(\"fr-par\")\n            .type(\"multicloud\")\n            .build());\n\n        var pool = new Pool(\"pool\", PoolArgs.builder()\n            .name(\"placement_group\")\n            .clusterId(cluster.id())\n            .nodeType(\"gp1_xs\")\n            .placementGroupId(placementGroup.id())\n            .size(1)\n            .region(cluster.region())\n            .zone(placementGroup.zone())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  placementGroup:\n    type: scaleway:instance:PlacementGroup\n    name: placement_group\n    properties:\n      name: pool-placement-group\n      policyType: max_availability\n      policyMode: optional\n      zone: nl-ams-1\n  pool:\n    type: scaleway:kubernetes:Pool\n    properties:\n      name: placement_group\n      clusterId: ${cluster.id}\n      nodeType: gp1_xs\n      placementGroupId: ${placementGroup.id}\n      size: 1\n      region: ${cluster.region}\n      zone: ${placementGroup.zone}\n  cluster:\n    type: scaleway:kubernetes:Cluster\n    properties:\n      name: placement_group\n      cni: kilo\n      version: 1.32.3\n      tags:\n        - terraform-test\n        - scaleway_k8s_cluster\n        - placement_group\n      region: fr-par\n      type: multicloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Changing the node-type of a pool\n\nAs your needs evolve, you can migrate your workflow from one pool to another.\nPools have a unique name, and they also have an immutable node type.\nJust changing the pool node type will recreate a new pool which could lead to service disruption.\nTo migrate your application with as little downtime as possible we recommend using the following workflow:\n\n### General workflow to upgrade a pool\n\n- Create a new pool with a different name and the type you target.\n- Use [`kubectl drain`](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#drain) on nodes composing your old pool to drain the remaining workflows of this pool.\n  Normally it should transfer your workflows to the new pool. Check out the official documentation about [how to safely drain your nodes](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/).\n- Delete the old pool from your terraform configuration.\n\n### Using a composite name to force creation of a new pool when a variable updates\n\nIf you want to have a new pool created when a variable changes, you can use a name derived from node type such as:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst kubernetesClusterWorkers1 = new scaleway.kubernetes.Pool(\"kubernetes_cluster_workers_1\", {\n    clusterId: kubernetesCluster.id,\n    name: `${kubernetesClusterId}_${nodeType}_1`,\n    nodeType: nodeType,\n    autoscaling: true,\n    autohealing: true,\n    size: 5,\n    minSize: 5,\n    maxSize: 10,\n    waitForPoolReady: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nkubernetes_cluster_workers1 = scaleway.kubernetes.Pool(\"kubernetes_cluster_workers_1\",\n    cluster_id=kubernetes_cluster[\"id\"],\n    name=f\"{kubernetes_cluster_id}_{node_type}_1\",\n    node_type=node_type,\n    autoscaling=True,\n    autohealing=True,\n    size=5,\n    min_size=5,\n    max_size=10,\n    wait_for_pool_ready=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kubernetesClusterWorkers1 = new Scaleway.Kubernetes.Pool(\"kubernetes_cluster_workers_1\", new()\n    {\n        ClusterId = kubernetesCluster.Id,\n        Name = $\"{kubernetesClusterId}_{nodeType}_1\",\n        NodeType = nodeType,\n        Autoscaling = true,\n        Autohealing = true,\n        Size = 5,\n        MinSize = 5,\n        MaxSize = 10,\n        WaitForPoolReady = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/kubernetes\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := kubernetes.NewPool(ctx, \"kubernetes_cluster_workers_1\", \u0026kubernetes.PoolArgs{\n\t\t\tClusterId:        pulumi.Any(kubernetesCluster.Id),\n\t\t\tName:             pulumi.Sprintf(\"%v_%v_1\", kubernetesClusterId, nodeType),\n\t\t\tNodeType:         pulumi.Any(nodeType),\n\t\t\tAutoscaling:      pulumi.Bool(true),\n\t\t\tAutohealing:      pulumi.Bool(true),\n\t\t\tSize:             pulumi.Int(5),\n\t\t\tMinSize:          pulumi.Int(5),\n\t\t\tMaxSize:          pulumi.Int(10),\n\t\t\tWaitForPoolReady: 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.scaleway.kubernetes.Pool;\nimport com.pulumi.scaleway.kubernetes.PoolArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 kubernetesClusterWorkers1 = new Pool(\"kubernetesClusterWorkers1\", PoolArgs.builder()\n            .clusterId(kubernetesCluster.id())\n            .name(String.format(\"%s_%s_1\", kubernetesClusterId,nodeType))\n            .nodeType(nodeType)\n            .autoscaling(true)\n            .autohealing(true)\n            .size(5)\n            .minSize(5)\n            .maxSize(10)\n            .waitForPoolReady(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kubernetesClusterWorkers1:\n    type: scaleway:kubernetes:Pool\n    name: kubernetes_cluster_workers_1\n    properties:\n      clusterId: ${kubernetesCluster.id}\n      name: ${kubernetesClusterId}_${nodeType}_1\n      nodeType: ${nodeType}\n      autoscaling: true\n      autohealing: true\n      size: '5'\n      minSize: '5'\n      maxSize: '10'\n      waitForPoolReady: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThanks to [@deimosfr](https://github.com/deimosfr) for the contribution.\n\n## Import\n\nKubernetes pools can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/kubernetesNodePool:KubernetesNodePool mypool fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "autohealing": {
                    "type": "boolean",
                    "description": "Enables the autohealing feature for this pool.\n"
                },
                "autoscaling": {
                    "type": "boolean",
                    "description": "Enables the autoscaling feature for this pool.\n\n\u003e **Important:** When enabled, an update of 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 will not be taken into account.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Kubernetes cluster on which this pool will be created.\n"
                },
                "containerRuntime": {
                    "type": "string",
                    "description": "The container runtime of the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The creation date of the pool.\n"
                },
                "currentSize": {
                    "type": "integer",
                    "description": "The size of the pool at the time the terraform state was updated.\n"
                },
                "kubeletArgs": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The Kubelet arguments to be used by this pool\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool, used by the autoscaling feature.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool, used by the autoscaling feature.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The commercial type of the pool instances. Instances with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e is a special node type used to provision from other Cloud providers.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/KubernetesNodePoolNode:KubernetesNodePoolNode"
                    },
                    "description": "(List of) The nodes in the default pool.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) the nodes of the pool will be attached to.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "publicIpDisabled": {
                    "type": "boolean",
                    "description": "Defines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the pool should be created.\n"
                },
                "rootVolumeSizeInGb": {
                    "type": "integer",
                    "description": "The size of the system volume of the nodes in gigabyte\n\n\u003e Note: The minimal volume size of a node is 20GB.\n"
                },
                "rootVolumeType": {
                    "type": "string",
                    "description": "System volume type of the nodes composing the pool\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the pool.\n\n\u003e **Important:** This field will only be used at creation if autoscaling is enabled.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the node.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the pool.\n\n\u003e Note: As mentioned in [this document](https://github.com/scaleway/scaleway-cloud-controller-manager/blob/master/docs/tags.md#taints), taints of a pool's nodes are applied using tags. (e.g.: `\"taint=taintName=taintValue:Effect\"`)\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The last update date of the pool.\n"
                },
                "upgradePolicy": {
                    "$ref": "#/types/scaleway:index/KubernetesNodePoolUpgradePolicy:KubernetesNodePoolUpgradePolicy",
                    "description": "The Pool upgrade policy\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the pool.\n"
                },
                "waitForPoolReady": {
                    "type": "boolean",
                    "description": "Whether to wait for the pool to be ready.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the pool should be created.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n"
                }
            },
            "required": [
                "clusterId",
                "createdAt",
                "currentSize",
                "maxSize",
                "minSize",
                "name",
                "nodeType",
                "nodes",
                "rootVolumeSizeInGb",
                "rootVolumeType",
                "securityGroupId",
                "size",
                "status",
                "updatedAt",
                "upgradePolicy",
                "version"
            ],
            "inputProperties": {
                "autohealing": {
                    "type": "boolean",
                    "description": "Enables the autohealing feature for this pool.\n"
                },
                "autoscaling": {
                    "type": "boolean",
                    "description": "Enables the autoscaling feature for this pool.\n\n\u003e **Important:** When enabled, an update of 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 will not be taken into account.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Kubernetes cluster on which this pool will be created.\n",
                    "willReplaceOnChanges": true
                },
                "containerRuntime": {
                    "type": "string",
                    "description": "The container runtime of the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "kubeletArgs": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The Kubelet arguments to be used by this pool\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool, used by the autoscaling feature.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool, used by the autoscaling feature.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "nodeType": {
                    "type": "string",
                    "description": "The commercial type of the pool instances. Instances with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e is a special node type used to provision from other Cloud providers.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) the nodes of the pool will be attached to.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "publicIpDisabled": {
                    "type": "boolean",
                    "description": "Defines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the pool should be created.\n",
                    "willReplaceOnChanges": true
                },
                "rootVolumeSizeInGb": {
                    "type": "integer",
                    "description": "The size of the system volume of the nodes in gigabyte\n\n\u003e Note: The minimal volume size of a node is 20GB.\n",
                    "willReplaceOnChanges": true
                },
                "rootVolumeType": {
                    "type": "string",
                    "description": "System volume type of the nodes composing the pool\n",
                    "willReplaceOnChanges": true
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the pool.\n\n\u003e **Important:** This field will only be used at creation if autoscaling is enabled.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the pool.\n\n\u003e Note: As mentioned in [this document](https://github.com/scaleway/scaleway-cloud-controller-manager/blob/master/docs/tags.md#taints), taints of a pool's nodes are applied using tags. (e.g.: `\"taint=taintName=taintValue:Effect\"`)\n"
                },
                "upgradePolicy": {
                    "$ref": "#/types/scaleway:index/KubernetesNodePoolUpgradePolicy:KubernetesNodePoolUpgradePolicy",
                    "description": "The Pool upgrade policy\n"
                },
                "waitForPoolReady": {
                    "type": "boolean",
                    "description": "Whether to wait for the pool to be ready.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the pool should be created.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "nodeType",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KubernetesNodePool resources.\n",
                "properties": {
                    "autohealing": {
                        "type": "boolean",
                        "description": "Enables the autohealing feature for this pool.\n"
                    },
                    "autoscaling": {
                        "type": "boolean",
                        "description": "Enables the autoscaling feature for this pool.\n\n\u003e **Important:** When enabled, an update of 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 will not be taken into account.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the Kubernetes cluster on which this pool will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "containerRuntime": {
                        "type": "string",
                        "description": "The container runtime of the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The creation date of the pool.\n"
                    },
                    "currentSize": {
                        "type": "integer",
                        "description": "The size of the pool at the time the terraform state was updated.\n"
                    },
                    "kubeletArgs": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The Kubelet arguments to be used by this pool\n"
                    },
                    "maxSize": {
                        "type": "integer",
                        "description": "The maximum size of the pool, used by the autoscaling feature.\n"
                    },
                    "minSize": {
                        "type": "integer",
                        "description": "The minimum size of the pool, used by the autoscaling feature.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the pool.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The commercial type of the pool instances. Instances with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e is a special node type used to provision from other Cloud providers.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/KubernetesNodePoolNode:KubernetesNodePoolNode"
                        },
                        "description": "(List of) The nodes in the default pool.\n"
                    },
                    "placementGroupId": {
                        "type": "string",
                        "description": "The [placement group](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) the nodes of the pool will be attached to.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicIpDisabled": {
                        "type": "boolean",
                        "description": "Defines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the pool should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "rootVolumeSizeInGb": {
                        "type": "integer",
                        "description": "The size of the system volume of the nodes in gigabyte\n\n\u003e Note: The minimal volume size of a node is 20GB.\n",
                        "willReplaceOnChanges": true
                    },
                    "rootVolumeType": {
                        "type": "string",
                        "description": "System volume type of the nodes composing the pool\n",
                        "willReplaceOnChanges": true
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The ID of the security group\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the pool.\n\n\u003e **Important:** This field will only be used at creation if autoscaling is enabled.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the node.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the pool.\n\n\u003e Note: As mentioned in [this document](https://github.com/scaleway/scaleway-cloud-controller-manager/blob/master/docs/tags.md#taints), taints of a pool's nodes are applied using tags. (e.g.: `\"taint=taintName=taintValue:Effect\"`)\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The last update date of the pool.\n"
                    },
                    "upgradePolicy": {
                        "$ref": "#/types/scaleway:index/KubernetesNodePoolUpgradePolicy:KubernetesNodePoolUpgradePolicy",
                        "description": "The Pool upgrade policy\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "The version of the pool.\n"
                    },
                    "waitForPoolReady": {
                        "type": "boolean",
                        "description": "Whether to wait for the pool to be ready.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the pool should be created.\n\n\u003e **Important:** Updates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/kubernetesnodepool.KubernetesNodePool has been deprecated in favor of scaleway.kubernetes/pool.Pool"
        },
        "scaleway:index/loadbalancer:Loadbalancer": {
            "description": "Creates and manages Scaleway Load Balancers.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/concepts/#load-balancers) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-list-load-balancers).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.loadbalancers.Ip(\"main\", {zone: \"fr-par-1\"});\nconst base = new scaleway.loadbalancers.LoadBalancer(\"base\", {\n    ipIds: [main.id],\n    zone: main.zone,\n    type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.loadbalancers.Ip(\"main\", zone=\"fr-par-1\")\nbase = scaleway.loadbalancers.LoadBalancer(\"base\",\n    ip_ids=[main.id],\n    zone=main.zone,\n    type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Loadbalancers.Ip(\"main\", new()\n    {\n        Zone = \"fr-par-1\",\n    });\n\n    var @base = new Scaleway.Loadbalancers.LoadBalancer(\"base\", new()\n    {\n        IpIds = new[]\n        {\n            main.Id,\n        },\n        Zone = main.Zone,\n        Type = \"LB-S\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := loadbalancers.NewIp(ctx, \"main\", \u0026loadbalancers.IpArgs{\n\t\t\tZone: pulumi.String(\"fr-par-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewLoadBalancer(ctx, \"base\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tmain.ID(),\n\t\t\t},\n\t\t\tZone: main.Zone,\n\t\t\tType: pulumi.String(\"LB-S\"),\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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.IpArgs;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Ip(\"main\", IpArgs.builder()\n            .zone(\"fr-par-1\")\n            .build());\n\n        var base = new LoadBalancer(\"base\", LoadBalancerArgs.builder()\n            .ipIds(main.id())\n            .zone(main.zone())\n            .type(\"LB-S\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:loadbalancers:Ip\n    properties:\n      zone: fr-par-1\n  base:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipIds:\n        - ${main.id}\n      zone: ${main.zone}\n      type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Private LB\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst base = new scaleway.loadbalancers.LoadBalancer(\"base\", {\n    name: \"private-lb\",\n    type: \"LB-S\",\n    assignFlexibleIp: false,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbase = scaleway.loadbalancers.LoadBalancer(\"base\",\n    name=\"private-lb\",\n    type=\"LB-S\",\n    assign_flexible_ip=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @base = new Scaleway.Loadbalancers.LoadBalancer(\"base\", new()\n    {\n        Name = \"private-lb\",\n        Type = \"LB-S\",\n        AssignFlexibleIp = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewLoadBalancer(ctx, \"base\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tName:             pulumi.String(\"private-lb\"),\n\t\t\tType:             pulumi.String(\"LB-S\"),\n\t\t\tAssignFlexibleIp: 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.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 base = new LoadBalancer(\"base\", LoadBalancerArgs.builder()\n            .name(\"private-lb\")\n            .type(\"LB-S\")\n            .assignFlexibleIp(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  base:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      name: private-lb\n      type: LB-S\n      assignFlexibleIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst v4 = new scaleway.loadbalancers.Ip(\"v4\", {});\nconst v6 = new scaleway.loadbalancers.Ip(\"v6\", {isIpv6: true});\nconst main = new scaleway.loadbalancers.LoadBalancer(\"main\", {\n    ipIds: [\n        v4.id,\n        v6.id,\n    ],\n    name: \"ipv6-lb\",\n    type: \"LB-S\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nv4 = scaleway.loadbalancers.Ip(\"v4\")\nv6 = scaleway.loadbalancers.Ip(\"v6\", is_ipv6=True)\nmain = scaleway.loadbalancers.LoadBalancer(\"main\",\n    ip_ids=[\n        v4.id,\n        v6.id,\n    ],\n    name=\"ipv6-lb\",\n    type=\"LB-S\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var v4 = new Scaleway.Loadbalancers.Ip(\"v4\");\n\n    var v6 = new Scaleway.Loadbalancers.Ip(\"v6\", new()\n    {\n        IsIpv6 = true,\n    });\n\n    var main = new Scaleway.Loadbalancers.LoadBalancer(\"main\", new()\n    {\n        IpIds = new[]\n        {\n            v4.Id,\n            v6.Id,\n        },\n        Name = \"ipv6-lb\",\n        Type = \"LB-S\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tv4, err := loadbalancers.NewIp(ctx, \"v4\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv6, err := loadbalancers.NewIp(ctx, \"v6\", \u0026loadbalancers.IpArgs{\n\t\t\tIsIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewLoadBalancer(ctx, \"main\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tv4.ID(),\n\t\t\t\tv6.ID(),\n\t\t\t},\n\t\t\tName: pulumi.String(\"ipv6-lb\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.IpArgs;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 v4 = new Ip(\"v4\");\n\n        var v6 = new Ip(\"v6\", IpArgs.builder()\n            .isIpv6(true)\n            .build());\n\n        var main = new LoadBalancer(\"main\", LoadBalancerArgs.builder()\n            .ipIds(            \n                v4.id(),\n                v6.id())\n            .name(\"ipv6-lb\")\n            .type(\"LB-S\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  v4:\n    type: scaleway:loadbalancers:Ip\n  v6:\n    type: scaleway:loadbalancers:Ip\n    properties:\n      isIpv6: true\n  main:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipIds:\n        - ${v4.id}\n        - ${v6.id}\n      name: ipv6-lb\n      type: LB-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPAM IDs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    vpcId: vpc01.id,\n    ipv4Subnet: {\n        subnet: \"172.16.32.0/22\",\n    },\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.32.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\nconst v4 = new scaleway.loadbalancers.Ip(\"v4\", {});\nconst lb01 = new scaleway.loadbalancers.LoadBalancer(\"lb01\", {\n    ipIds: [v4.id],\n    name: \"my-lb\",\n    type: \"LB-S\",\n    privateNetworks: [{\n        privateNetworkId: pn01.id,\n        ipamIds: ip01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    vpc_id=vpc01.id,\n    ipv4_subnet={\n        \"subnet\": \"172.16.32.0/22\",\n    })\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.32.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\nv4 = scaleway.loadbalancers.Ip(\"v4\")\nlb01 = scaleway.loadbalancers.LoadBalancer(\"lb01\",\n    ip_ids=[v4.id],\n    name=\"my-lb\",\n    type=\"LB-S\",\n    private_networks=[{\n        \"private_network_id\": pn01.id,\n        \"ipam_ids\": ip01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        VpcId = vpc01.Id,\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.32.0/22\",\n        },\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.32.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n    var v4 = new Scaleway.Loadbalancers.Ip(\"v4\");\n\n    var lb01 = new Scaleway.Loadbalancers.LoadBalancer(\"lb01\", new()\n    {\n        IpIds = new[]\n        {\n            v4.Id,\n        },\n        Name = \"my-lb\",\n        Type = \"LB-S\",\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Loadbalancers.Inputs.LoadBalancerPrivateNetworkArgs\n            {\n                PrivateNetworkId = pn01.Id,\n                IpamIds = ip01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tVpcId: vpc01.ID(),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.32.0/22\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.32.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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\tv4, err := loadbalancers.NewIp(ctx, \"v4\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewLoadBalancer(ctx, \"lb01\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpIds: pulumi.StringArray{\n\t\t\t\tv4.ID(),\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-lb\"),\n\t\t\tType: pulumi.String(\"LB-S\"),\n\t\t\tPrivateNetworks: loadbalancers.LoadBalancerPrivateNetworkArray{\n\t\t\t\t\u0026loadbalancers.LoadBalancerPrivateNetworkArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\t\t\tIpamIds:          ip01.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.LoadBalancerPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .vpcId(vpc01.id())\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.32.0/22\")\n                .build())\n            .build());\n\n        var ip01 = new com.pulumi.scaleway.ipam.Ip(\"ip01\", com.pulumi.scaleway.ipam.IpArgs.builder()\n            .address(\"172.16.32.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n        var v4 = new com.pulumi.scaleway.loadbalancers.Ip(\"v4\");\n\n        var lb01 = new LoadBalancer(\"lb01\", LoadBalancerArgs.builder()\n            .ipIds(v4.id())\n            .name(\"my-lb\")\n            .type(\"LB-S\")\n            .privateNetworks(LoadBalancerPrivateNetworkArgs.builder()\n                .privateNetworkId(pn01.id())\n                .ipamIds(ip01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      vpcId: ${vpc01.id}\n      ipv4Subnet:\n        subnet: 172.16.32.0/22\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.32.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  v4:\n    type: scaleway:loadbalancers:Ip\n  lb01:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipIds:\n        - ${v4.id}\n      name: my-lb\n      type: LB-S\n      privateNetworks:\n        - privateNetworkId: ${pn01.id}\n          ipamIds: ${ip01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Migration\n\nIn order to migrate to other Load Balancer types, you can check upwards or downwards migration via our CLI `scw lb lb-types list`.\nThis change will not recreate your Load Balancer.\n\nPlease check our [documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-migrate-a-load-balancer) for further details.\n\n## Import\n\nLoad Balancers can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancer:Loadbalancer main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\nBe aware that you will also need to import the \u003cspan pulumi-lang-nodejs=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-dotnet=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-go=\"`loadbalancers.Ip`\" pulumi-lang-python=\"`loadbalancers.Ip`\" pulumi-lang-yaml=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-java=\"`scaleway.loadbalancers.Ip`\"\u003e`scaleway.loadbalancers.Ip`\u003c/span\u003e resource.\n\n",
            "properties": {
                "assignFlexibleIp": {
                    "type": "boolean",
                    "description": "Defines whether to automatically assign a flexible public IPv4 to the Load Balancer.\n"
                },
                "assignFlexibleIpv6": {
                    "type": "boolean",
                    "description": "Defines whether to automatically assign a flexible public IPv6 to the Load Balancer.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Load Balancer.\n"
                },
                "externalPrivateNetworks": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use lb_private_network.\nIf \u003cspan pulumi-lang-nodejs=\"`externalPrivateNetworks`\" pulumi-lang-dotnet=\"`ExternalPrivateNetworks`\" pulumi-lang-go=\"`externalPrivateNetworks`\" pulumi-lang-python=\"`external_private_networks`\" pulumi-lang-yaml=\"`externalPrivateNetworks`\" pulumi-lang-java=\"`externalPrivateNetworks`\"\u003e`externalPrivateNetworks`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e can not be set directly in the Load Balancer.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The Load Balancer public IPv4 address.\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e. The ID of the associated Load Balancer IP. See below.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e will recreate the Load Balancer.\n",
                    "deprecationMessage": "Please use ip_ids"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The List of IP IDs to attach to the Load Balancer.\n\n\u003e **Important:** Make sure to use a \u003cspan pulumi-lang-nodejs=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-dotnet=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-go=\"`loadbalancers.Ip`\" pulumi-lang-python=\"`loadbalancers.Ip`\" pulumi-lang-yaml=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-java=\"`scaleway.loadbalancers.Ip`\"\u003e`scaleway.loadbalancers.Ip`\u003c/span\u003e resource to create the IPs.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "The Load Balancer public IPv6 address.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Load Balancer.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the Organization ID the Load Balancer is associated with.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerPrivateIp:LoadbalancerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerPrivateNetwork:LoadbalancerPrivateNetwork"
                    },
                    "description": "List of private network to connect with your load balancer.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Load Balancer is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the resource"
                },
                "releaseIp": {
                    "type": "boolean",
                    "description": "The \u003cspan pulumi-lang-nodejs=\"`releaseIp`\" pulumi-lang-dotnet=\"`ReleaseIp`\" pulumi-lang-go=\"`releaseIp`\" pulumi-lang-python=\"`release_ip`\" pulumi-lang-yaml=\"`releaseIp`\" pulumi-lang-java=\"`releaseIp`\"\u003e`releaseIp`\u003c/span\u003e allow the release of the IP address associated with the Load Balancer.\n",
                    "deprecationMessage": "The resource ip will be destroyed by it's own resource. Please set this 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"
                },
                "sslCompatibilityLevel": {
                    "type": "string",
                    "description": "Enforces minimal SSL version (in SSL/TLS offloading context). Please check [possible values](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-create-a-load-balancer).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Load Balancer.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the Load Balancer. Please check the migration section to upgrade the type.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n"
                }
            },
            "required": [
                "ipAddress",
                "ipId",
                "ipIds",
                "ipv6Address",
                "name",
                "organizationId",
                "privateIps",
                "privateNetworks",
                "projectId",
                "region",
                "type"
            ],
            "inputProperties": {
                "assignFlexibleIp": {
                    "type": "boolean",
                    "description": "Defines whether to automatically assign a flexible public IPv4 to the Load Balancer.\n",
                    "willReplaceOnChanges": true
                },
                "assignFlexibleIpv6": {
                    "type": "boolean",
                    "description": "Defines whether to automatically assign a flexible public IPv6 to the Load Balancer.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the Load Balancer.\n"
                },
                "externalPrivateNetworks": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use lb_private_network.\nIf \u003cspan pulumi-lang-nodejs=\"`externalPrivateNetworks`\" pulumi-lang-dotnet=\"`ExternalPrivateNetworks`\" pulumi-lang-go=\"`externalPrivateNetworks`\" pulumi-lang-python=\"`external_private_networks`\" pulumi-lang-yaml=\"`externalPrivateNetworks`\" pulumi-lang-java=\"`externalPrivateNetworks`\"\u003e`externalPrivateNetworks`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e can not be set directly in the Load Balancer.\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e. The ID of the associated Load Balancer IP. See below.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e will recreate the Load Balancer.\n",
                    "deprecationMessage": "Please use ip_ids"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The List of IP IDs to attach to the Load Balancer.\n\n\u003e **Important:** Make sure to use a \u003cspan pulumi-lang-nodejs=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-dotnet=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-go=\"`loadbalancers.Ip`\" pulumi-lang-python=\"`loadbalancers.Ip`\" pulumi-lang-yaml=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-java=\"`scaleway.loadbalancers.Ip`\"\u003e`scaleway.loadbalancers.Ip`\u003c/span\u003e resource to create the IPs.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Load Balancer.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerPrivateNetwork:LoadbalancerPrivateNetwork"
                    },
                    "description": "List of private network to connect with your load balancer.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Load Balancer is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "releaseIp": {
                    "type": "boolean",
                    "description": "The \u003cspan pulumi-lang-nodejs=\"`releaseIp`\" pulumi-lang-dotnet=\"`ReleaseIp`\" pulumi-lang-go=\"`releaseIp`\" pulumi-lang-python=\"`release_ip`\" pulumi-lang-yaml=\"`releaseIp`\" pulumi-lang-java=\"`releaseIp`\"\u003e`releaseIp`\u003c/span\u003e allow the release of the IP address associated with the Load Balancer.\n",
                    "deprecationMessage": "The resource ip will be destroyed by it's own resource. Please set this 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"
                },
                "sslCompatibilityLevel": {
                    "type": "string",
                    "description": "Enforces minimal SSL version (in SSL/TLS offloading context). Please check [possible values](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-create-a-load-balancer).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Load Balancer.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the Load Balancer. Please check the migration section to upgrade the type.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Loadbalancer resources.\n",
                "properties": {
                    "assignFlexibleIp": {
                        "type": "boolean",
                        "description": "Defines whether to automatically assign a flexible public IPv4 to the Load Balancer.\n",
                        "willReplaceOnChanges": true
                    },
                    "assignFlexibleIpv6": {
                        "type": "boolean",
                        "description": "Defines whether to automatically assign a flexible public IPv6 to the Load Balancer.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the Load Balancer.\n"
                    },
                    "externalPrivateNetworks": {
                        "type": "boolean",
                        "description": "A boolean to specify whether to use lb_private_network.\nIf \u003cspan pulumi-lang-nodejs=\"`externalPrivateNetworks`\" pulumi-lang-dotnet=\"`ExternalPrivateNetworks`\" pulumi-lang-go=\"`externalPrivateNetworks`\" pulumi-lang-python=\"`external_private_networks`\" pulumi-lang-yaml=\"`externalPrivateNetworks`\" pulumi-lang-java=\"`externalPrivateNetworks`\"\u003e`externalPrivateNetworks`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e can not be set directly in the Load Balancer.\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The Load Balancer public IPv4 address.\n"
                    },
                    "ipId": {
                        "type": "string",
                        "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e. The ID of the associated Load Balancer IP. See below.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e will recreate the Load Balancer.\n",
                        "deprecationMessage": "Please use ip_ids"
                    },
                    "ipIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The List of IP IDs to attach to the Load Balancer.\n\n\u003e **Important:** Make sure to use a \u003cspan pulumi-lang-nodejs=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-dotnet=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-go=\"`loadbalancers.Ip`\" pulumi-lang-python=\"`loadbalancers.Ip`\" pulumi-lang-yaml=\"`scaleway.loadbalancers.Ip`\" pulumi-lang-java=\"`scaleway.loadbalancers.Ip`\"\u003e`scaleway.loadbalancers.Ip`\u003c/span\u003e resource to create the IPs.\n"
                    },
                    "ipv6Address": {
                        "type": "string",
                        "description": "The Load Balancer public IPv6 address.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Load Balancer.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The ID of the Organization ID the Load Balancer is associated with.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/LoadbalancerPrivateIp:LoadbalancerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/LoadbalancerPrivateNetwork:LoadbalancerPrivateNetwork"
                        },
                        "description": "List of private network to connect with your load balancer.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Load Balancer is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region of the resource"
                    },
                    "releaseIp": {
                        "type": "boolean",
                        "description": "The \u003cspan pulumi-lang-nodejs=\"`releaseIp`\" pulumi-lang-dotnet=\"`ReleaseIp`\" pulumi-lang-go=\"`releaseIp`\" pulumi-lang-python=\"`release_ip`\" pulumi-lang-yaml=\"`releaseIp`\" pulumi-lang-java=\"`releaseIp`\"\u003e`releaseIp`\u003c/span\u003e allow the release of the IP address associated with the Load Balancer.\n",
                        "deprecationMessage": "The resource ip will be destroyed by it's own resource. Please set this 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"
                    },
                    "sslCompatibilityLevel": {
                        "type": "string",
                        "description": "Enforces minimal SSL version (in SSL/TLS offloading context). Please check [possible values](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-load-balancer-create-a-load-balancer).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Load Balancer.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the Load Balancer. Please check the migration section to upgrade the type.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone of the Load Balancer.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancer.Loadbalancer has been deprecated in favor of scaleway.loadbalancers/loadbalancer.LoadBalancer"
        },
        "scaleway:index/loadbalancerAcl:LoadbalancerAcl": {
            "description": "Creates and manages Scaleway Load Balancer ACLs.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/reference-content/acls/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-acls-get-an-acl).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst acl01 = new scaleway.loadbalancers.Acl(\"acl01\", {\n    frontendId: frt01.id,\n    name: \"acl01\",\n    description: \"Exclude well-known IPs\",\n    index: 0,\n    action: {\n        type: \"allow\",\n    },\n    match: {\n        ipSubnets: [\n            \"192.168.0.1\",\n            \"192.168.0.2\",\n            \"192.168.10.0/24\",\n        ],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nacl01 = scaleway.loadbalancers.Acl(\"acl01\",\n    frontend_id=frt01[\"id\"],\n    name=\"acl01\",\n    description=\"Exclude well-known IPs\",\n    index=0,\n    action={\n        \"type\": \"allow\",\n    },\n    match={\n        \"ip_subnets\": [\n            \"192.168.0.1\",\n            \"192.168.0.2\",\n            \"192.168.10.0/24\",\n        ],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var acl01 = new Scaleway.Loadbalancers.Acl(\"acl01\", new()\n    {\n        FrontendId = frt01.Id,\n        Name = \"acl01\",\n        Description = \"Exclude well-known IPs\",\n        Index = 0,\n        Action = new Scaleway.Loadbalancers.Inputs.AclActionArgs\n        {\n            Type = \"allow\",\n        },\n        Match = new Scaleway.Loadbalancers.Inputs.AclMatchArgs\n        {\n            IpSubnets = new[]\n            {\n                \"192.168.0.1\",\n                \"192.168.0.2\",\n                \"192.168.10.0/24\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewAcl(ctx, \"acl01\", \u0026loadbalancers.AclArgs{\n\t\t\tFrontendId:  pulumi.Any(frt01.Id),\n\t\t\tName:        pulumi.String(\"acl01\"),\n\t\t\tDescription: pulumi.String(\"Exclude well-known IPs\"),\n\t\t\tIndex:       pulumi.Int(0),\n\t\t\tAction: \u0026loadbalancers.AclActionArgs{\n\t\t\t\tType: pulumi.String(\"allow\"),\n\t\t\t},\n\t\t\tMatch: \u0026loadbalancers.AclMatchArgs{\n\t\t\t\tIpSubnets: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tpulumi.String(\"192.168.0.2\"),\n\t\t\t\t\tpulumi.String(\"192.168.10.0/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.pulumi.scaleway.loadbalancers.Acl;\nimport com.pulumi.scaleway.loadbalancers.AclArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.AclActionArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.AclMatchArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 acl01 = new Acl(\"acl01\", AclArgs.builder()\n            .frontendId(frt01.id())\n            .name(\"acl01\")\n            .description(\"Exclude well-known IPs\")\n            .index(0)\n            .action(AclActionArgs.builder()\n                .type(\"allow\")\n                .build())\n            .match(AclMatchArgs.builder()\n                .ipSubnets(                \n                    \"192.168.0.1\",\n                    \"192.168.0.2\",\n                    \"192.168.10.0/24\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  acl01:\n    type: scaleway:loadbalancers:Acl\n    properties:\n      frontendId: ${frt01.id}\n      name: acl01\n      description: Exclude well-known IPs\n      index: 0 # Allow downstream requests from: 192.168.0.1, 192.168.0.2 or 192.168.10.0/24\n      action:\n        type: allow\n      match:\n        ipSubnets:\n          - 192.168.0.1\n          - 192.168.0.2\n          - 192.168.10.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer ACLs can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerAcl:LoadbalancerAcl acl01 fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "action": {
                    "$ref": "#/types/scaleway:index/LoadbalancerAclAction:LoadbalancerAclAction",
                    "description": "Action to undertake when an ACL filter matches.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's creation (RFC 3339 format)"
                },
                "description": {
                    "type": "string",
                    "description": "The ACL description.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer frontend to attach the ACL to.\n"
                },
                "index": {
                    "type": "integer",
                    "description": "The priority of this ACL (ACLs are applied in ascending order, 0 is the first ACL executed).\n"
                },
                "match": {
                    "$ref": "#/types/scaleway:index/LoadbalancerAclMatch:LoadbalancerAclMatch",
                    "description": "The ACL match rule. At least \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`httpFilterValue`\" pulumi-lang-dotnet=\"`HttpFilterValue`\" pulumi-lang-go=\"`httpFilterValue`\" pulumi-lang-python=\"`http_filter_value`\" pulumi-lang-yaml=\"`httpFilterValue`\" pulumi-lang-java=\"`httpFilterValue`\"\u003e`httpFilterValue`\u003c/span\u003e are required.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "IsDate and time of ACL's update (RFC 3339 format)"
                }
            },
            "required": [
                "action",
                "createdAt",
                "frontendId",
                "index",
                "name",
                "updatedAt"
            ],
            "inputProperties": {
                "action": {
                    "$ref": "#/types/scaleway:index/LoadbalancerAclAction:LoadbalancerAclAction",
                    "description": "Action to undertake when an ACL filter matches.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The ACL description.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer frontend to attach the ACL to.\n",
                    "willReplaceOnChanges": true
                },
                "index": {
                    "type": "integer",
                    "description": "The priority of this ACL (ACLs are applied in ascending order, 0 is the first ACL executed).\n"
                },
                "match": {
                    "$ref": "#/types/scaleway:index/LoadbalancerAclMatch:LoadbalancerAclMatch",
                    "description": "The ACL match rule. At least \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`httpFilterValue`\" pulumi-lang-dotnet=\"`HttpFilterValue`\" pulumi-lang-go=\"`httpFilterValue`\" pulumi-lang-python=\"`http_filter_value`\" pulumi-lang-yaml=\"`httpFilterValue`\" pulumi-lang-java=\"`httpFilterValue`\"\u003e`httpFilterValue`\u003c/span\u003e are required.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                }
            },
            "requiredInputs": [
                "action",
                "frontendId",
                "index"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerAcl resources.\n",
                "properties": {
                    "action": {
                        "$ref": "#/types/scaleway:index/LoadbalancerAclAction:LoadbalancerAclAction",
                        "description": "Action to undertake when an ACL filter matches.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "IsDate and time of ACL's creation (RFC 3339 format)"
                    },
                    "description": {
                        "type": "string",
                        "description": "The ACL description.\n"
                    },
                    "frontendId": {
                        "type": "string",
                        "description": "The ID of the Load Balancer frontend to attach the ACL to.\n",
                        "willReplaceOnChanges": true
                    },
                    "index": {
                        "type": "integer",
                        "description": "The priority of this ACL (ACLs are applied in ascending order, 0 is the first ACL executed).\n"
                    },
                    "match": {
                        "$ref": "#/types/scaleway:index/LoadbalancerAclMatch:LoadbalancerAclMatch",
                        "description": "The ACL match rule. At least \u003cspan pulumi-lang-nodejs=\"`ipSubnet`\" pulumi-lang-dotnet=\"`IpSubnet`\" pulumi-lang-go=\"`ipSubnet`\" pulumi-lang-python=\"`ip_subnet`\" pulumi-lang-yaml=\"`ipSubnet`\" pulumi-lang-java=\"`ipSubnet`\"\u003e`ipSubnet`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ipsEdgeServices`\" pulumi-lang-dotnet=\"`IpsEdgeServices`\" pulumi-lang-go=\"`ipsEdgeServices`\" pulumi-lang-python=\"`ips_edge_services`\" pulumi-lang-yaml=\"`ipsEdgeServices`\" pulumi-lang-java=\"`ipsEdgeServices`\"\u003e`ipsEdgeServices`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`httpFilter`\" pulumi-lang-dotnet=\"`HttpFilter`\" pulumi-lang-go=\"`httpFilter`\" pulumi-lang-python=\"`http_filter`\" pulumi-lang-yaml=\"`httpFilter`\" pulumi-lang-java=\"`httpFilter`\"\u003e`httpFilter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`httpFilterValue`\" pulumi-lang-dotnet=\"`HttpFilterValue`\" pulumi-lang-go=\"`httpFilterValue`\" pulumi-lang-python=\"`http_filter_value`\" pulumi-lang-yaml=\"`httpFilterValue`\" pulumi-lang-java=\"`httpFilterValue`\"\u003e`httpFilterValue`\u003c/span\u003e are required.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The ACL name. If not provided it will be randomly generated.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "IsDate and time of ACL's update (RFC 3339 format)"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalanceracl.LoadbalancerAcl has been deprecated in favor of scaleway.loadbalancers/acl.Acl"
        },
        "scaleway:index/loadbalancerBackend:LoadbalancerBackend": {
            "description": "Creates and manages Scaleway Load Balancer backends.\n\nor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/reference-content/configuring-backends/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-backends).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst backend01 = new scaleway.loadbalancers.Backend(\"backend01\", {\n    lbId: lb01.id,\n    name: \"backend01\",\n    forwardProtocol: \"http\",\n    forwardPort: 80,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbackend01 = scaleway.loadbalancers.Backend(\"backend01\",\n    lb_id=lb01[\"id\"],\n    name=\"backend01\",\n    forward_protocol=\"http\",\n    forward_port=80)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var backend01 = new Scaleway.Loadbalancers.Backend(\"backend01\", new()\n    {\n        LbId = lb01.Id,\n        Name = \"backend01\",\n        ForwardProtocol = \"http\",\n        ForwardPort = 80,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewBackend(ctx, \"backend01\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            pulumi.Any(lb01.Id),\n\t\t\tName:            pulumi.String(\"backend01\"),\n\t\t\tForwardProtocol: pulumi.String(\"http\"),\n\t\t\tForwardPort:     pulumi.Int(80),\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.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 backend01 = new Backend(\"backend01\", BackendArgs.builder()\n            .lbId(lb01.id())\n            .name(\"backend01\")\n            .forwardProtocol(\"http\")\n            .forwardPort(80)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  backend01:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb01.id}\n      name: backend01\n      forwardProtocol: http\n      forwardPort: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With HTTP Health Check\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst backend01 = new scaleway.loadbalancers.Backend(\"backend01\", {\n    lbId: lb01.id,\n    name: \"backend01\",\n    forwardProtocol: \"http\",\n    forwardPort: 80,\n    healthCheckHttp: {\n        uri: \"/health\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbackend01 = scaleway.loadbalancers.Backend(\"backend01\",\n    lb_id=lb01[\"id\"],\n    name=\"backend01\",\n    forward_protocol=\"http\",\n    forward_port=80,\n    health_check_http={\n        \"uri\": \"/health\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var backend01 = new Scaleway.Loadbalancers.Backend(\"backend01\", new()\n    {\n        LbId = lb01.Id,\n        Name = \"backend01\",\n        ForwardProtocol = \"http\",\n        ForwardPort = 80,\n        HealthCheckHttp = new Scaleway.Loadbalancers.Inputs.BackendHealthCheckHttpArgs\n        {\n            Uri = \"/health\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewBackend(ctx, \"backend01\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            pulumi.Any(lb01.Id),\n\t\t\tName:            pulumi.String(\"backend01\"),\n\t\t\tForwardProtocol: pulumi.String(\"http\"),\n\t\t\tForwardPort:     pulumi.Int(80),\n\t\t\tHealthCheckHttp: \u0026loadbalancers.BackendHealthCheckHttpArgs{\n\t\t\t\tUri: pulumi.String(\"/health\"),\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.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.BackendHealthCheckHttpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 backend01 = new Backend(\"backend01\", BackendArgs.builder()\n            .lbId(lb01.id())\n            .name(\"backend01\")\n            .forwardProtocol(\"http\")\n            .forwardPort(80)\n            .healthCheckHttp(BackendHealthCheckHttpArgs.builder()\n                .uri(\"/health\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  backend01:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb01.id}\n      name: backend01\n      forwardProtocol: http\n      forwardPort: '80'\n      healthCheckHttp:\n        uri: /health\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer backends can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerBackend:LoadbalancerBackend backend01 fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "failoverHost": {
                    "type": "string",
                    "description": "Scaleway S3 bucket website to be served in case all backend servers are down\n\n**NOTE** : Only the host part of the Scaleway S3 bucket website is expected.\nE.g. 'failover-website.s3-website.fr-par.scw.cloud' if your bucket website URL is 'https://failover-website.s3-website.fr-par.scw.cloud/'."
                },
                "forwardPort": {
                    "type": "integer",
                    "description": "User sessions will be forwarded to this port of backend servers"
                },
                "forwardPortAlgorithm": {
                    "type": "string",
                    "description": "Load balancing algorithm"
                },
                "forwardProtocol": {
                    "type": "string",
                    "description": "Backend protocol"
                },
                "healthCheckDelay": {
                    "type": "string",
                    "description": "Interval between two HC requests"
                },
                "healthCheckHttp": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttp:LoadbalancerBackendHealthCheckHttp",
                    "description": "HTTP Health check"
                },
                "healthCheckHttps": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttps:LoadbalancerBackendHealthCheckHttps",
                    "description": "HTTPS Health check"
                },
                "healthCheckMaxRetries": {
                    "type": "integer",
                    "description": "Number of allowed failed HC requests before the backend server is marked down"
                },
                "healthCheckPort": {
                    "type": "integer",
                    "description": "Port the HC requests will be send to. Default to \u003cspan pulumi-lang-nodejs=\"`forwardPort`\" pulumi-lang-dotnet=\"`ForwardPort`\" pulumi-lang-go=\"`forwardPort`\" pulumi-lang-python=\"`forward_port`\" pulumi-lang-yaml=\"`forwardPort`\" pulumi-lang-java=\"`forwardPort`\"\u003e`forwardPort`\u003c/span\u003e"
                },
                "healthCheckSendProxy": {
                    "type": "boolean",
                    "description": "Defines whether proxy protocol should be activated for the health check"
                },
                "healthCheckTcp": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckTcp:LoadbalancerBackendHealthCheckTcp",
                    "description": "TCP Health check"
                },
                "healthCheckTimeout": {
                    "type": "string",
                    "description": "Timeout before we consider a HC request failed"
                },
                "healthCheckTransientDelay": {
                    "type": "string",
                    "description": "Time to wait between two consecutive health checks when a backend server is in a transient state (going UP or DOWN)"
                },
                "ignoreSslServerVerify": {
                    "type": "boolean",
                    "description": "Specifies whether the Load Balancer should check the backend server’s certificate before initiating a connection"
                },
                "lbId": {
                    "type": "string",
                    "description": "The load-balancer ID"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "Maximum number of connections allowed per backend server"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "Number of retries when a backend server connection failed"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the backend"
                },
                "onMarkedDownAction": {
                    "type": "string",
                    "description": "Modify what occurs when a backend server is marked down"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "Type of PROXY protocol to enable"
                },
                "redispatchAttemptCount": {
                    "type": "integer",
                    "description": "Whether to use another backend server on each attempt"
                },
                "sendProxyV2": {
                    "type": "boolean",
                    "description": "Enables PROXY protocol version 2",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" proxyProtocol \" pulumi-lang-dotnet=\" ProxyProtocol \" pulumi-lang-go=\" proxyProtocol \" pulumi-lang-python=\" proxy_protocol \" pulumi-lang-yaml=\" proxyProtocol \" pulumi-lang-java=\" proxyProtocol \"\u003e proxyProtocol \u003c/span\u003einstead"
                },
                "serverIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Backend server IP addresses list (IPv4 or IPv6)"
                },
                "sslBridging": {
                    "type": "boolean",
                    "description": "Enables SSL between load balancer and backend servers"
                },
                "stickySessions": {
                    "type": "string",
                    "description": "The type of sticky sessions"
                },
                "stickySessionsCookieName": {
                    "type": "string",
                    "description": "Cookie name for sticky sessions"
                },
                "timeoutConnect": {
                    "type": "string",
                    "description": "Maximum initial server connection establishment time"
                },
                "timeoutQueue": {
                    "type": "string",
                    "description": "Maximum time (in seconds) for a request to be left pending in queue when \u003cspan pulumi-lang-nodejs=\"`maxConnections`\" pulumi-lang-dotnet=\"`MaxConnections`\" pulumi-lang-go=\"`maxConnections`\" pulumi-lang-python=\"`max_connections`\" pulumi-lang-yaml=\"`maxConnections`\" pulumi-lang-java=\"`maxConnections`\"\u003e`maxConnections`\u003c/span\u003e is reached"
                },
                "timeoutServer": {
                    "type": "string",
                    "description": "Maximum server connection inactivity time"
                },
                "timeoutTunnel": {
                    "type": "string",
                    "description": "Maximum tunnel inactivity time"
                }
            },
            "required": [
                "forwardPort",
                "forwardProtocol",
                "healthCheckPort",
                "healthCheckTcp",
                "lbId",
                "name",
                "sendProxyV2"
            ],
            "inputProperties": {
                "failoverHost": {
                    "type": "string",
                    "description": "Scaleway S3 bucket website to be served in case all backend servers are down\n\n**NOTE** : Only the host part of the Scaleway S3 bucket website is expected.\nE.g. 'failover-website.s3-website.fr-par.scw.cloud' if your bucket website URL is 'https://failover-website.s3-website.fr-par.scw.cloud/'."
                },
                "forwardPort": {
                    "type": "integer",
                    "description": "User sessions will be forwarded to this port of backend servers"
                },
                "forwardPortAlgorithm": {
                    "type": "string",
                    "description": "Load balancing algorithm"
                },
                "forwardProtocol": {
                    "type": "string",
                    "description": "Backend protocol"
                },
                "healthCheckDelay": {
                    "type": "string",
                    "description": "Interval between two HC requests"
                },
                "healthCheckHttp": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttp:LoadbalancerBackendHealthCheckHttp",
                    "description": "HTTP Health check"
                },
                "healthCheckHttps": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttps:LoadbalancerBackendHealthCheckHttps",
                    "description": "HTTPS Health check"
                },
                "healthCheckMaxRetries": {
                    "type": "integer",
                    "description": "Number of allowed failed HC requests before the backend server is marked down"
                },
                "healthCheckPort": {
                    "type": "integer",
                    "description": "Port the HC requests will be send to. Default to \u003cspan pulumi-lang-nodejs=\"`forwardPort`\" pulumi-lang-dotnet=\"`ForwardPort`\" pulumi-lang-go=\"`forwardPort`\" pulumi-lang-python=\"`forward_port`\" pulumi-lang-yaml=\"`forwardPort`\" pulumi-lang-java=\"`forwardPort`\"\u003e`forwardPort`\u003c/span\u003e"
                },
                "healthCheckSendProxy": {
                    "type": "boolean",
                    "description": "Defines whether proxy protocol should be activated for the health check"
                },
                "healthCheckTcp": {
                    "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckTcp:LoadbalancerBackendHealthCheckTcp",
                    "description": "TCP Health check"
                },
                "healthCheckTimeout": {
                    "type": "string",
                    "description": "Timeout before we consider a HC request failed"
                },
                "healthCheckTransientDelay": {
                    "type": "string",
                    "description": "Time to wait between two consecutive health checks when a backend server is in a transient state (going UP or DOWN)"
                },
                "ignoreSslServerVerify": {
                    "type": "boolean",
                    "description": "Specifies whether the Load Balancer should check the backend server’s certificate before initiating a connection"
                },
                "lbId": {
                    "type": "string",
                    "description": "The load-balancer ID",
                    "willReplaceOnChanges": true
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "Maximum number of connections allowed per backend server"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "Number of retries when a backend server connection failed"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the backend"
                },
                "onMarkedDownAction": {
                    "type": "string",
                    "description": "Modify what occurs when a backend server is marked down"
                },
                "proxyProtocol": {
                    "type": "string",
                    "description": "Type of PROXY protocol to enable"
                },
                "redispatchAttemptCount": {
                    "type": "integer",
                    "description": "Whether to use another backend server on each attempt"
                },
                "sendProxyV2": {
                    "type": "boolean",
                    "description": "Enables PROXY protocol version 2",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" proxyProtocol \" pulumi-lang-dotnet=\" ProxyProtocol \" pulumi-lang-go=\" proxyProtocol \" pulumi-lang-python=\" proxy_protocol \" pulumi-lang-yaml=\" proxyProtocol \" pulumi-lang-java=\" proxyProtocol \"\u003e proxyProtocol \u003c/span\u003einstead"
                },
                "serverIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Backend server IP addresses list (IPv4 or IPv6)"
                },
                "sslBridging": {
                    "type": "boolean",
                    "description": "Enables SSL between load balancer and backend servers"
                },
                "stickySessions": {
                    "type": "string",
                    "description": "The type of sticky sessions"
                },
                "stickySessionsCookieName": {
                    "type": "string",
                    "description": "Cookie name for sticky sessions"
                },
                "timeoutConnect": {
                    "type": "string",
                    "description": "Maximum initial server connection establishment time"
                },
                "timeoutQueue": {
                    "type": "string",
                    "description": "Maximum time (in seconds) for a request to be left pending in queue when \u003cspan pulumi-lang-nodejs=\"`maxConnections`\" pulumi-lang-dotnet=\"`MaxConnections`\" pulumi-lang-go=\"`maxConnections`\" pulumi-lang-python=\"`max_connections`\" pulumi-lang-yaml=\"`maxConnections`\" pulumi-lang-java=\"`maxConnections`\"\u003e`maxConnections`\u003c/span\u003e is reached"
                },
                "timeoutServer": {
                    "type": "string",
                    "description": "Maximum server connection inactivity time"
                },
                "timeoutTunnel": {
                    "type": "string",
                    "description": "Maximum tunnel inactivity time"
                }
            },
            "requiredInputs": [
                "forwardPort",
                "forwardProtocol",
                "lbId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerBackend resources.\n",
                "properties": {
                    "failoverHost": {
                        "type": "string",
                        "description": "Scaleway S3 bucket website to be served in case all backend servers are down\n\n**NOTE** : Only the host part of the Scaleway S3 bucket website is expected.\nE.g. 'failover-website.s3-website.fr-par.scw.cloud' if your bucket website URL is 'https://failover-website.s3-website.fr-par.scw.cloud/'."
                    },
                    "forwardPort": {
                        "type": "integer",
                        "description": "User sessions will be forwarded to this port of backend servers"
                    },
                    "forwardPortAlgorithm": {
                        "type": "string",
                        "description": "Load balancing algorithm"
                    },
                    "forwardProtocol": {
                        "type": "string",
                        "description": "Backend protocol"
                    },
                    "healthCheckDelay": {
                        "type": "string",
                        "description": "Interval between two HC requests"
                    },
                    "healthCheckHttp": {
                        "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttp:LoadbalancerBackendHealthCheckHttp",
                        "description": "HTTP Health check"
                    },
                    "healthCheckHttps": {
                        "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckHttps:LoadbalancerBackendHealthCheckHttps",
                        "description": "HTTPS Health check"
                    },
                    "healthCheckMaxRetries": {
                        "type": "integer",
                        "description": "Number of allowed failed HC requests before the backend server is marked down"
                    },
                    "healthCheckPort": {
                        "type": "integer",
                        "description": "Port the HC requests will be send to. Default to \u003cspan pulumi-lang-nodejs=\"`forwardPort`\" pulumi-lang-dotnet=\"`ForwardPort`\" pulumi-lang-go=\"`forwardPort`\" pulumi-lang-python=\"`forward_port`\" pulumi-lang-yaml=\"`forwardPort`\" pulumi-lang-java=\"`forwardPort`\"\u003e`forwardPort`\u003c/span\u003e"
                    },
                    "healthCheckSendProxy": {
                        "type": "boolean",
                        "description": "Defines whether proxy protocol should be activated for the health check"
                    },
                    "healthCheckTcp": {
                        "$ref": "#/types/scaleway:index/LoadbalancerBackendHealthCheckTcp:LoadbalancerBackendHealthCheckTcp",
                        "description": "TCP Health check"
                    },
                    "healthCheckTimeout": {
                        "type": "string",
                        "description": "Timeout before we consider a HC request failed"
                    },
                    "healthCheckTransientDelay": {
                        "type": "string",
                        "description": "Time to wait between two consecutive health checks when a backend server is in a transient state (going UP or DOWN)"
                    },
                    "ignoreSslServerVerify": {
                        "type": "boolean",
                        "description": "Specifies whether the Load Balancer should check the backend server’s certificate before initiating a connection"
                    },
                    "lbId": {
                        "type": "string",
                        "description": "The load-balancer ID",
                        "willReplaceOnChanges": true
                    },
                    "maxConnections": {
                        "type": "integer",
                        "description": "Maximum number of connections allowed per backend server"
                    },
                    "maxRetries": {
                        "type": "integer",
                        "description": "Number of retries when a backend server connection failed"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the backend"
                    },
                    "onMarkedDownAction": {
                        "type": "string",
                        "description": "Modify what occurs when a backend server is marked down"
                    },
                    "proxyProtocol": {
                        "type": "string",
                        "description": "Type of PROXY protocol to enable"
                    },
                    "redispatchAttemptCount": {
                        "type": "integer",
                        "description": "Whether to use another backend server on each attempt"
                    },
                    "sendProxyV2": {
                        "type": "boolean",
                        "description": "Enables PROXY protocol version 2",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" proxyProtocol \" pulumi-lang-dotnet=\" ProxyProtocol \" pulumi-lang-go=\" proxyProtocol \" pulumi-lang-python=\" proxy_protocol \" pulumi-lang-yaml=\" proxyProtocol \" pulumi-lang-java=\" proxyProtocol \"\u003e proxyProtocol \u003c/span\u003einstead"
                    },
                    "serverIps": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Backend server IP addresses list (IPv4 or IPv6)"
                    },
                    "sslBridging": {
                        "type": "boolean",
                        "description": "Enables SSL between load balancer and backend servers"
                    },
                    "stickySessions": {
                        "type": "string",
                        "description": "The type of sticky sessions"
                    },
                    "stickySessionsCookieName": {
                        "type": "string",
                        "description": "Cookie name for sticky sessions"
                    },
                    "timeoutConnect": {
                        "type": "string",
                        "description": "Maximum initial server connection establishment time"
                    },
                    "timeoutQueue": {
                        "type": "string",
                        "description": "Maximum time (in seconds) for a request to be left pending in queue when \u003cspan pulumi-lang-nodejs=\"`maxConnections`\" pulumi-lang-dotnet=\"`MaxConnections`\" pulumi-lang-go=\"`maxConnections`\" pulumi-lang-python=\"`max_connections`\" pulumi-lang-yaml=\"`maxConnections`\" pulumi-lang-java=\"`maxConnections`\"\u003e`maxConnections`\u003c/span\u003e is reached"
                    },
                    "timeoutServer": {
                        "type": "string",
                        "description": "Maximum server connection inactivity time"
                    },
                    "timeoutTunnel": {
                        "type": "string",
                        "description": "Maximum tunnel inactivity time"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancerbackend.LoadbalancerBackend has been deprecated in favor of scaleway.loadbalancers/backend.Backend"
        },
        "scaleway:index/loadbalancerCertificate:LoadbalancerCertificate": {
            "description": "Creates and manages Scaleway Load Balancer certificates.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/how-to/add-certificate/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-certificate).\n\n## Example Usage\n\n### Custom Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst cert01 = new scaleway.loadbalancers.Certificate(\"cert01\", {\n    lbId: lb01.id,\n    name: \"custom-cert\",\n    customCertificate: {\n        certificateChain: \"CERTIFICATE_CHAIN_CONTENTS\\n\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ncert01 = scaleway.loadbalancers.Certificate(\"cert01\",\n    lb_id=lb01[\"id\"],\n    name=\"custom-cert\",\n    custom_certificate={\n        \"certificate_chain\": \"CERTIFICATE_CHAIN_CONTENTS\\n\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert01 = new Scaleway.Loadbalancers.Certificate(\"cert01\", new()\n    {\n        LbId = lb01.Id,\n        Name = \"custom-cert\",\n        CustomCertificate = new Scaleway.Loadbalancers.Inputs.CertificateCustomCertificateArgs\n        {\n            CertificateChain = @\"CERTIFICATE_CHAIN_CONTENTS\n\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewCertificate(ctx, \"cert01\", \u0026loadbalancers.CertificateArgs{\n\t\t\tLbId: pulumi.Any(lb01.Id),\n\t\t\tName: pulumi.String(\"custom-cert\"),\n\t\t\tCustomCertificate: \u0026loadbalancers.CertificateCustomCertificateArgs{\n\t\t\t\tCertificateChain: pulumi.String(\"CERTIFICATE_CHAIN_CONTENTS\\n\"),\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.scaleway.loadbalancers.Certificate;\nimport com.pulumi.scaleway.loadbalancers.CertificateArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.CertificateCustomCertificateArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cert01 = new Certificate(\"cert01\", CertificateArgs.builder()\n            .lbId(lb01.id())\n            .name(\"custom-cert\")\n            .customCertificate(CertificateCustomCertificateArgs.builder()\n                .certificateChain(\"\"\"\nCERTIFICATE_CHAIN_CONTENTS\n                \"\"\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert01:\n    type: scaleway:loadbalancers:Certificate\n    properties:\n      lbId: ${lb01.id}\n      name: custom-cert\n      customCertificate:\n        certificateChain: |\n          CERTIFICATE_CHAIN_CONTENTS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Additional notes\n\n* Ensure that all domain names used in the configuration are pointing to the Load Balancer IP.\n  You can achieve this by creating a DNS record through Terraform pointing to  the \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ipAddress`\u003c/span\u003e property of the \u003cspan pulumi-lang-nodejs=\"`lbBeta`\" pulumi-lang-dotnet=\"`LbBeta`\" pulumi-lang-go=\"`lbBeta`\" pulumi-lang-python=\"`lb_beta`\" pulumi-lang-yaml=\"`lbBeta`\" pulumi-lang-java=\"`lbBeta`\"\u003e`lbBeta`\u003c/span\u003e entity.\n* If there are any issues with the certificate, you will receive a \u003cspan pulumi-lang-nodejs=\"`400`\" pulumi-lang-dotnet=\"`400`\" pulumi-lang-go=\"`400`\" pulumi-lang-python=\"`400`\" pulumi-lang-yaml=\"`400`\" pulumi-lang-java=\"`400`\"\u003e`400`\u003c/span\u003e error from the \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e operation.\n  Use `export TF_LOG=DEBUG` to view the exact problem returned by the API.\n* Wildcards are not yet supported with Let's Encrypt.\n* Use \u003cspan pulumi-lang-nodejs=\"`lifecycle`\" pulumi-lang-dotnet=\"`Lifecycle`\" pulumi-lang-go=\"`lifecycle`\" pulumi-lang-python=\"`lifecycle`\" pulumi-lang-yaml=\"`lifecycle`\" pulumi-lang-java=\"`lifecycle`\"\u003e`lifecycle`\u003c/span\u003e instruction with \u003cspan pulumi-lang-nodejs=\"`createBeforeDestroy \" pulumi-lang-dotnet=\"`CreateBeforeDestroy \" pulumi-lang-go=\"`createBeforeDestroy \" pulumi-lang-python=\"`create_before_destroy \" pulumi-lang-yaml=\"`createBeforeDestroy \" pulumi-lang-java=\"`createBeforeDestroy \"\u003e`createBeforeDestroy \u003c/span\u003e= true` to permit correct certificate replacement and prevent a \u003cspan pulumi-lang-nodejs=\"`400`\" pulumi-lang-dotnet=\"`400`\" pulumi-lang-go=\"`400`\" pulumi-lang-python=\"`400`\" pulumi-lang-yaml=\"`400`\" pulumi-lang-java=\"`400`\"\u003e`400`\u003c/span\u003e error from the \u003cspan pulumi-lang-nodejs=\"`apply`\" pulumi-lang-dotnet=\"`Apply`\" pulumi-lang-go=\"`apply`\" pulumi-lang-python=\"`apply`\" pulumi-lang-yaml=\"`apply`\" pulumi-lang-java=\"`apply`\"\u003e`apply`\u003c/span\u003e operation.\n\n## Import\n\nLoad Balancer certificates can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerCertificate:LoadbalancerCertificate cert01 fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "Main domain of the certificate\n"
                },
                "customCertificate": {
                    "$ref": "#/types/scaleway:index/LoadbalancerCertificateCustomCertificate:LoadbalancerCertificateCustomCertificate",
                    "description": "The custom type certificate type configuration"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The identifier (SHA-1) of the certificate\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The load-balancer ID"
                },
                "letsencrypt": {
                    "$ref": "#/types/scaleway:index/LoadbalancerCertificateLetsencrypt:LoadbalancerCertificateLetsencrypt",
                    "description": "The Let's Encrypt type certificate configuration"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the load-balancer certificate"
                },
                "notValidAfter": {
                    "type": "string",
                    "description": "The not valid after validity bound timestamp\n"
                },
                "notValidBefore": {
                    "type": "string",
                    "description": "The not valid before validity bound timestamp\n"
                },
                "status": {
                    "type": "string",
                    "description": "Certificate status\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The alternative domain names of the certificate\n"
                }
            },
            "required": [
                "commonName",
                "fingerprint",
                "lbId",
                "name",
                "notValidAfter",
                "notValidBefore",
                "status",
                "subjectAlternativeNames"
            ],
            "inputProperties": {
                "customCertificate": {
                    "$ref": "#/types/scaleway:index/LoadbalancerCertificateCustomCertificate:LoadbalancerCertificateCustomCertificate",
                    "description": "The custom type certificate type configuration",
                    "willReplaceOnChanges": true
                },
                "lbId": {
                    "type": "string",
                    "description": "The load-balancer ID",
                    "willReplaceOnChanges": true
                },
                "letsencrypt": {
                    "$ref": "#/types/scaleway:index/LoadbalancerCertificateLetsencrypt:LoadbalancerCertificateLetsencrypt",
                    "description": "The Let's Encrypt type certificate configuration",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the load-balancer certificate"
                }
            },
            "requiredInputs": [
                "lbId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerCertificate resources.\n",
                "properties": {
                    "commonName": {
                        "type": "string",
                        "description": "Main domain of the certificate\n"
                    },
                    "customCertificate": {
                        "$ref": "#/types/scaleway:index/LoadbalancerCertificateCustomCertificate:LoadbalancerCertificateCustomCertificate",
                        "description": "The custom type certificate type configuration",
                        "willReplaceOnChanges": true
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The identifier (SHA-1) of the certificate\n"
                    },
                    "lbId": {
                        "type": "string",
                        "description": "The load-balancer ID",
                        "willReplaceOnChanges": true
                    },
                    "letsencrypt": {
                        "$ref": "#/types/scaleway:index/LoadbalancerCertificateLetsencrypt:LoadbalancerCertificateLetsencrypt",
                        "description": "The Let's Encrypt type certificate configuration",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the load-balancer certificate"
                    },
                    "notValidAfter": {
                        "type": "string",
                        "description": "The not valid after validity bound timestamp\n"
                    },
                    "notValidBefore": {
                        "type": "string",
                        "description": "The not valid before validity bound timestamp\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Certificate status\n"
                    },
                    "subjectAlternativeNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The alternative domain names of the certificate\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancercertificate.LoadbalancerCertificate has been deprecated in favor of scaleway.loadbalancers/certificate.Certificate"
        },
        "scaleway:index/loadbalancerFrontend:LoadbalancerFrontend": {
            "description": "Creates and manages Scaleway Load Balancer frontends.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/reference-content/configuring-frontends/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-frontends).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst frontend01 = new scaleway.loadbalancers.Frontend(\"frontend01\", {\n    lbId: lb01.id,\n    backendId: backend01.id,\n    name: \"frontend01\",\n    inboundPort: 80,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nfrontend01 = scaleway.loadbalancers.Frontend(\"frontend01\",\n    lb_id=lb01[\"id\"],\n    backend_id=backend01[\"id\"],\n    name=\"frontend01\",\n    inbound_port=80)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontend01 = new Scaleway.Loadbalancers.Frontend(\"frontend01\", new()\n    {\n        LbId = lb01.Id,\n        BackendId = backend01.Id,\n        Name = \"frontend01\",\n        InboundPort = 80,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewFrontend(ctx, \"frontend01\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        pulumi.Any(lb01.Id),\n\t\t\tBackendId:   pulumi.Any(backend01.Id),\n\t\t\tName:        pulumi.String(\"frontend01\"),\n\t\t\tInboundPort: pulumi.Int(80),\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.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 frontend01 = new Frontend(\"frontend01\", FrontendArgs.builder()\n            .lbId(lb01.id())\n            .backendId(backend01.id())\n            .name(\"frontend01\")\n            .inboundPort(80)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontend01:\n    type: scaleway:loadbalancers:Frontend\n    properties:\n      lbId: ${lb01.id}\n      backendId: ${backend01.id}\n      name: frontend01\n      inboundPort: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## With ACLs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst frontend01 = new scaleway.loadbalancers.Frontend(\"frontend01\", {\n    lbId: lb01.id,\n    backendId: backend01.id,\n    name: \"frontend01\",\n    inboundPort: 80,\n    acls: [\n        {\n            name: \"blacklist wellknwon IPs\",\n            action: {\n                type: \"allow\",\n            },\n            match: {\n                ipSubnets: [\n                    \"192.168.0.1\",\n                    \"192.168.0.2\",\n                    \"192.168.10.0/24\",\n                ],\n            },\n        },\n        {\n            action: {\n                type: \"deny\",\n            },\n            match: {\n                ipSubnets: [\"51.51.51.51\"],\n                httpFilter: \"regex\",\n                httpFilterValues: [\"^foo*bar$\"],\n            },\n        },\n        {\n            action: {\n                type: \"allow\",\n            },\n            match: {\n                httpFilter: \"path_begin\",\n                httpFilterValues: [\n                    \"foo\",\n                    \"bar\",\n                ],\n            },\n        },\n        {\n            action: {\n                type: \"allow\",\n            },\n            match: {\n                httpFilter: \"path_begin\",\n                httpFilterValues: [\"hi\"],\n                invert: true,\n            },\n        },\n        {\n            action: {\n                type: \"allow\",\n            },\n            match: {\n                httpFilter: \"http_header_match\",\n                httpFilterValues: \"foo\",\n                httpFilterOption: \"bar\",\n            },\n        },\n        {\n            action: {\n                type: \"redirect\",\n                redirects: [{\n                    type: \"location\",\n                    target: \"https://example.com\",\n                    code: 307,\n                }],\n            },\n            match: {\n                ipSubnets: [\"10.0.0.10\"],\n                httpFilter: \"path_begin\",\n                httpFilterValues: [\n                    \"foo\",\n                    \"bar\",\n                ],\n            },\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nfrontend01 = scaleway.loadbalancers.Frontend(\"frontend01\",\n    lb_id=lb01[\"id\"],\n    backend_id=backend01[\"id\"],\n    name=\"frontend01\",\n    inbound_port=80,\n    acls=[\n        {\n            \"name\": \"blacklist wellknwon IPs\",\n            \"action\": {\n                \"type\": \"allow\",\n            },\n            \"match\": {\n                \"ip_subnets\": [\n                    \"192.168.0.1\",\n                    \"192.168.0.2\",\n                    \"192.168.10.0/24\",\n                ],\n            },\n        },\n        {\n            \"action\": {\n                \"type\": \"deny\",\n            },\n            \"match\": {\n                \"ip_subnets\": [\"51.51.51.51\"],\n                \"http_filter\": \"regex\",\n                \"http_filter_values\": [\"^foo*bar$\"],\n            },\n        },\n        {\n            \"action\": {\n                \"type\": \"allow\",\n            },\n            \"match\": {\n                \"http_filter\": \"path_begin\",\n                \"http_filter_values\": [\n                    \"foo\",\n                    \"bar\",\n                ],\n            },\n        },\n        {\n            \"action\": {\n                \"type\": \"allow\",\n            },\n            \"match\": {\n                \"http_filter\": \"path_begin\",\n                \"http_filter_values\": [\"hi\"],\n                \"invert\": True,\n            },\n        },\n        {\n            \"action\": {\n                \"type\": \"allow\",\n            },\n            \"match\": {\n                \"http_filter\": \"http_header_match\",\n                \"http_filter_values\": \"foo\",\n                \"http_filter_option\": \"bar\",\n            },\n        },\n        {\n            \"action\": {\n                \"type\": \"redirect\",\n                \"redirects\": [{\n                    \"type\": \"location\",\n                    \"target\": \"https://example.com\",\n                    \"code\": 307,\n                }],\n            },\n            \"match\": {\n                \"ip_subnets\": [\"10.0.0.10\"],\n                \"http_filter\": \"path_begin\",\n                \"http_filter_values\": [\n                    \"foo\",\n                    \"bar\",\n                ],\n            },\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var frontend01 = new Scaleway.Loadbalancers.Frontend(\"frontend01\", new()\n    {\n        LbId = lb01.Id,\n        BackendId = backend01.Id,\n        Name = \"frontend01\",\n        InboundPort = 80,\n        Acls = new[]\n        {\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Name = \"blacklist wellknwon IPs\",\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"allow\",\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    IpSubnets = new[]\n                    {\n                        \"192.168.0.1\",\n                        \"192.168.0.2\",\n                        \"192.168.10.0/24\",\n                    },\n                },\n            },\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"deny\",\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    IpSubnets = new[]\n                    {\n                        \"51.51.51.51\",\n                    },\n                    HttpFilter = \"regex\",\n                    HttpFilterValues = new[]\n                    {\n                        \"^foo*bar$\",\n                    },\n                },\n            },\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"allow\",\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    HttpFilter = \"path_begin\",\n                    HttpFilterValues = new[]\n                    {\n                        \"foo\",\n                        \"bar\",\n                    },\n                },\n            },\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"allow\",\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    HttpFilter = \"path_begin\",\n                    HttpFilterValues = new[]\n                    {\n                        \"hi\",\n                    },\n                    Invert = true,\n                },\n            },\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"allow\",\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    HttpFilter = \"http_header_match\",\n                    HttpFilterValues = \"foo\",\n                    HttpFilterOption = \"bar\",\n                },\n            },\n            new Scaleway.Loadbalancers.Inputs.FrontendAclArgs\n            {\n                Action = new Scaleway.Loadbalancers.Inputs.FrontendAclActionArgs\n                {\n                    Type = \"redirect\",\n                    Redirects = new[]\n                    {\n                        new Scaleway.Loadbalancers.Inputs.FrontendAclActionRedirectArgs\n                        {\n                            Type = \"location\",\n                            Target = \"https://example.com\",\n                            Code = 307,\n                        },\n                    },\n                },\n                Match = new Scaleway.Loadbalancers.Inputs.FrontendAclMatchArgs\n                {\n                    IpSubnets = new[]\n                    {\n                        \"10.0.0.10\",\n                    },\n                    HttpFilter = \"path_begin\",\n                    HttpFilterValues = new[]\n                    {\n                        \"foo\",\n                        \"bar\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewFrontend(ctx, \"frontend01\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        pulumi.Any(lb01.Id),\n\t\t\tBackendId:   pulumi.Any(backend01.Id),\n\t\t\tName:        pulumi.String(\"frontend01\"),\n\t\t\tInboundPort: pulumi.Int(80),\n\t\t\tAcls: loadbalancers.FrontendAclArray{\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tName: pulumi.String(\"blacklist wellknwon IPs\"),\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"allow\"),\n\t\t\t\t\t},\n\t\t\t\t\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tIpSubnets: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"192.168.0.1\"),\n\t\t\t\t\t\t\tpulumi.String(\"192.168.0.2\"),\n\t\t\t\t\t\t\tpulumi.String(\"192.168.10.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tIpSubnets: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"51.51.51.51\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHttpFilter: pulumi.String(\"regex\"),\n\t\t\t\t\t\tHttpFilterValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"^foo*bar$\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"allow\"),\n\t\t\t\t\t},\n\t\t\t\t\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tHttpFilter: pulumi.String(\"path_begin\"),\n\t\t\t\t\t\tHttpFilterValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"allow\"),\n\t\t\t\t\t},\n\t\t\t\t\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tHttpFilter: pulumi.String(\"path_begin\"),\n\t\t\t\t\t\tHttpFilterValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hi\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tInvert: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"allow\"),\n\t\t\t\t\t},\n\t\t\t\t\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tHttpFilter:       pulumi.String(\"http_header_match\"),\n\t\t\t\t\t\tHttpFilterValues: pulumi.StringArray(\"foo\"),\n\t\t\t\t\t\tHttpFilterOption: pulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancers.FrontendAclArgs{\n\t\t\t\t\tAction: \u0026loadbalancers.FrontendAclActionArgs{\n\t\t\t\t\t\tType: pulumi.String(\"redirect\"),\n\t\t\t\t\t\tRedirects: loadbalancers.FrontendAclActionRedirectArray{\n\t\t\t\t\t\t\t\u0026loadbalancers.FrontendAclActionRedirectArgs{\n\t\t\t\t\t\t\t\tType:   pulumi.String(\"location\"),\n\t\t\t\t\t\t\t\tTarget: pulumi.String(\"https://example.com\"),\n\t\t\t\t\t\t\t\tCode:   pulumi.Int(307),\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\tMatch: \u0026loadbalancers.FrontendAclMatchArgs{\n\t\t\t\t\t\tIpSubnets: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tHttpFilter: pulumi.String(\"path_begin\"),\n\t\t\t\t\t\tHttpFilterValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\tpulumi.String(\"bar\"),\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.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.FrontendAclArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.FrontendAclActionArgs;\nimport com.pulumi.scaleway.loadbalancers.inputs.FrontendAclMatchArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 frontend01 = new Frontend(\"frontend01\", FrontendArgs.builder()\n            .lbId(lb01.id())\n            .backendId(backend01.id())\n            .name(\"frontend01\")\n            .inboundPort(80)\n            .acls(            \n                FrontendAclArgs.builder()\n                    .name(\"blacklist wellknwon IPs\")\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"allow\")\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .ipSubnets(                        \n                            \"192.168.0.1\",\n                            \"192.168.0.2\",\n                            \"192.168.10.0/24\")\n                        .build())\n                    .build(),\n                FrontendAclArgs.builder()\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"deny\")\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .ipSubnets(\"51.51.51.51\")\n                        .httpFilter(\"regex\")\n                        .httpFilterValues(\"^foo*bar$\")\n                        .build())\n                    .build(),\n                FrontendAclArgs.builder()\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"allow\")\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .httpFilter(\"path_begin\")\n                        .httpFilterValues(                        \n                            \"foo\",\n                            \"bar\")\n                        .build())\n                    .build(),\n                FrontendAclArgs.builder()\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"allow\")\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .httpFilter(\"path_begin\")\n                        .httpFilterValues(\"hi\")\n                        .invert(true)\n                        .build())\n                    .build(),\n                FrontendAclArgs.builder()\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"allow\")\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .httpFilter(\"http_header_match\")\n                        .httpFilterValues(\"foo\")\n                        .httpFilterOption(\"bar\")\n                        .build())\n                    .build(),\n                FrontendAclArgs.builder()\n                    .action(FrontendAclActionArgs.builder()\n                        .type(\"redirect\")\n                        .redirects(FrontendAclActionRedirectArgs.builder()\n                            .type(\"location\")\n                            .target(\"https://example.com\")\n                            .code(307)\n                            .build())\n                        .build())\n                    .match(FrontendAclMatchArgs.builder()\n                        .ipSubnets(\"10.0.0.10\")\n                        .httpFilter(\"path_begin\")\n                        .httpFilterValues(                        \n                            \"foo\",\n                            \"bar\")\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  frontend01:\n    type: scaleway:loadbalancers:Frontend\n    properties:\n      lbId: ${lb01.id}\n      backendId: ${backend01.id}\n      name: frontend01\n      inboundPort: '80'\n      acls:\n        - name: blacklist wellknwon IPs\n          action:\n            type: allow\n          match:\n            ipSubnets:\n              - 192.168.0.1\n              - 192.168.0.2\n              - 192.168.10.0/24\n        - action:\n            type: deny\n          match:\n            ipSubnets:\n              - 51.51.51.51\n            httpFilter: regex\n            httpFilterValues:\n              - ^foo*bar$\n        - action:\n            type: allow\n          match:\n            httpFilter: path_begin\n            httpFilterValues:\n              - foo\n              - bar\n        - action:\n            type: allow\n          match:\n            httpFilter: path_begin\n            httpFilterValues:\n              - hi\n            invert: 'true'\n        - action:\n            type: allow\n          match:\n            httpFilter: http_header_match\n            httpFilterValues: foo\n            httpFilterOption: bar\n        - action:\n            type: redirect\n            redirects:\n              - type: location\n                target: https://example.com\n                code: 307\n          match:\n            ipSubnets:\n              - 10.0.0.10\n            httpFilter: path_begin\n            httpFilterValues:\n              - foo\n              - bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer frontends can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerFrontend:LoadbalancerFrontend frontend01 fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerFrontendAcl:LoadbalancerFrontendAcl"
                    },
                    "description": "A list of ACL rules to apply to the Load Balancer frontend.  Defined below.\n"
                },
                "backendId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer backend this frontend is attached to.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`lbId`\" pulumi-lang-dotnet=\"`LbId`\" pulumi-lang-go=\"`lbId`\" pulumi-lang-python=\"`lb_id`\" pulumi-lang-yaml=\"`lbId`\" pulumi-lang-java=\"`lbId`\"\u003e`lbId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendId`\" pulumi-lang-dotnet=\"`BackendId`\" pulumi-lang-go=\"`backendId`\" pulumi-lang-python=\"`backend_id`\" pulumi-lang-yaml=\"`backendId`\" pulumi-lang-java=\"`backendId`\"\u003e`backendId`\u003c/span\u003e will recreate the frontend.\n"
                },
                "certificateId": {
                    "type": "string",
                    "description": "(Deprecated, use \u003cspan pulumi-lang-nodejs=\"`certificateIds`\" pulumi-lang-dotnet=\"`CertificateIds`\" pulumi-lang-go=\"`certificateIds`\" pulumi-lang-python=\"`certificate_ids`\" pulumi-lang-yaml=\"`certificateIds`\" pulumi-lang-java=\"`certificateIds`\"\u003e`certificateIds`\u003c/span\u003e instead) First certificate ID used by the frontend.\n",
                    "deprecationMessage": "Please use certificate_ids"
                },
                "certificateIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of certificate IDs that should be used by the frontend.\n\n\u003e **Important:** Certificates are not allowed on port 80.\n"
                },
                "connectionRateLimit": {
                    "type": "integer",
                    "description": "The rate limit for new connections established on this frontend. Use 0 value to disable, else value is connections per second.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the frontend was created.\n"
                },
                "enableAccessLogs": {
                    "type": "boolean",
                    "description": "Defines whether to enable access logs on the frontend.\n"
                },
                "enableHttp3": {
                    "type": "boolean",
                    "description": "Activates HTTP/3 protocol.\n"
                },
                "externalAcls": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use lb_acl.\nIf \u003cspan pulumi-lang-nodejs=\"`externalAcls`\" pulumi-lang-dotnet=\"`ExternalAcls`\" pulumi-lang-go=\"`externalAcls`\" pulumi-lang-python=\"`external_acls`\" pulumi-lang-yaml=\"`externalAcls`\" pulumi-lang-java=\"`externalAcls`\"\u003e`externalAcls`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e can not be set directly in the Load Balancer frontend.\n"
                },
                "inboundPort": {
                    "type": "integer",
                    "description": "TCP port to listen to on the front side.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer this frontend is attached to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                },
                "timeoutClient": {
                    "type": "string",
                    "description": "Maximum inactivity time on the client side. (e.g. \u003cspan pulumi-lang-nodejs=\"`1s`\" pulumi-lang-dotnet=\"`1s`\" pulumi-lang-go=\"`1s`\" pulumi-lang-python=\"`1s`\" pulumi-lang-yaml=\"`1s`\" pulumi-lang-java=\"`1s`\"\u003e`1s`\u003c/span\u003e)\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the frontend resource was updated.\n"
                }
            },
            "required": [
                "backendId",
                "certificateId",
                "createdAt",
                "inboundPort",
                "lbId",
                "name",
                "updatedAt"
            ],
            "inputProperties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/LoadbalancerFrontendAcl:LoadbalancerFrontendAcl"
                    },
                    "description": "A list of ACL rules to apply to the Load Balancer frontend.  Defined below.\n"
                },
                "backendId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer backend this frontend is attached to.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`lbId`\" pulumi-lang-dotnet=\"`LbId`\" pulumi-lang-go=\"`lbId`\" pulumi-lang-python=\"`lb_id`\" pulumi-lang-yaml=\"`lbId`\" pulumi-lang-java=\"`lbId`\"\u003e`lbId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendId`\" pulumi-lang-dotnet=\"`BackendId`\" pulumi-lang-go=\"`backendId`\" pulumi-lang-python=\"`backend_id`\" pulumi-lang-yaml=\"`backendId`\" pulumi-lang-java=\"`backendId`\"\u003e`backendId`\u003c/span\u003e will recreate the frontend.\n",
                    "willReplaceOnChanges": true
                },
                "certificateIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of certificate IDs that should be used by the frontend.\n\n\u003e **Important:** Certificates are not allowed on port 80.\n"
                },
                "connectionRateLimit": {
                    "type": "integer",
                    "description": "The rate limit for new connections established on this frontend. Use 0 value to disable, else value is connections per second.\n"
                },
                "enableAccessLogs": {
                    "type": "boolean",
                    "description": "Defines whether to enable access logs on the frontend.\n"
                },
                "enableHttp3": {
                    "type": "boolean",
                    "description": "Activates HTTP/3 protocol.\n"
                },
                "externalAcls": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use lb_acl.\nIf \u003cspan pulumi-lang-nodejs=\"`externalAcls`\" pulumi-lang-dotnet=\"`ExternalAcls`\" pulumi-lang-go=\"`externalAcls`\" pulumi-lang-python=\"`external_acls`\" pulumi-lang-yaml=\"`externalAcls`\" pulumi-lang-java=\"`externalAcls`\"\u003e`externalAcls`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e can not be set directly in the Load Balancer frontend.\n"
                },
                "inboundPort": {
                    "type": "integer",
                    "description": "TCP port to listen to on the front side.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The ID of the Load Balancer this frontend is attached to.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The ACL name. If not provided it will be randomly generated.\n"
                },
                "timeoutClient": {
                    "type": "string",
                    "description": "Maximum inactivity time on the client side. (e.g. \u003cspan pulumi-lang-nodejs=\"`1s`\" pulumi-lang-dotnet=\"`1s`\" pulumi-lang-go=\"`1s`\" pulumi-lang-python=\"`1s`\" pulumi-lang-yaml=\"`1s`\" pulumi-lang-java=\"`1s`\"\u003e`1s`\u003c/span\u003e)\n"
                }
            },
            "requiredInputs": [
                "backendId",
                "inboundPort",
                "lbId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerFrontend resources.\n",
                "properties": {
                    "acls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/LoadbalancerFrontendAcl:LoadbalancerFrontendAcl"
                        },
                        "description": "A list of ACL rules to apply to the Load Balancer frontend.  Defined below.\n"
                    },
                    "backendId": {
                        "type": "string",
                        "description": "The ID of the Load Balancer backend this frontend is attached to.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`lbId`\" pulumi-lang-dotnet=\"`LbId`\" pulumi-lang-go=\"`lbId`\" pulumi-lang-python=\"`lb_id`\" pulumi-lang-yaml=\"`lbId`\" pulumi-lang-java=\"`lbId`\"\u003e`lbId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`backendId`\" pulumi-lang-dotnet=\"`BackendId`\" pulumi-lang-go=\"`backendId`\" pulumi-lang-python=\"`backend_id`\" pulumi-lang-yaml=\"`backendId`\" pulumi-lang-java=\"`backendId`\"\u003e`backendId`\u003c/span\u003e will recreate the frontend.\n",
                        "willReplaceOnChanges": true
                    },
                    "certificateId": {
                        "type": "string",
                        "description": "(Deprecated, use \u003cspan pulumi-lang-nodejs=\"`certificateIds`\" pulumi-lang-dotnet=\"`CertificateIds`\" pulumi-lang-go=\"`certificateIds`\" pulumi-lang-python=\"`certificate_ids`\" pulumi-lang-yaml=\"`certificateIds`\" pulumi-lang-java=\"`certificateIds`\"\u003e`certificateIds`\u003c/span\u003e instead) First certificate ID used by the frontend.\n",
                        "deprecationMessage": "Please use certificate_ids"
                    },
                    "certificateIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of certificate IDs that should be used by the frontend.\n\n\u003e **Important:** Certificates are not allowed on port 80.\n"
                    },
                    "connectionRateLimit": {
                        "type": "integer",
                        "description": "The rate limit for new connections established on this frontend. Use 0 value to disable, else value is connections per second.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the frontend was created.\n"
                    },
                    "enableAccessLogs": {
                        "type": "boolean",
                        "description": "Defines whether to enable access logs on the frontend.\n"
                    },
                    "enableHttp3": {
                        "type": "boolean",
                        "description": "Activates HTTP/3 protocol.\n"
                    },
                    "externalAcls": {
                        "type": "boolean",
                        "description": "A boolean to specify whether to use lb_acl.\nIf \u003cspan pulumi-lang-nodejs=\"`externalAcls`\" pulumi-lang-dotnet=\"`ExternalAcls`\" pulumi-lang-go=\"`externalAcls`\" pulumi-lang-python=\"`external_acls`\" pulumi-lang-yaml=\"`externalAcls`\" pulumi-lang-java=\"`externalAcls`\"\u003e`externalAcls`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e can not be set directly in the Load Balancer frontend.\n"
                    },
                    "inboundPort": {
                        "type": "integer",
                        "description": "TCP port to listen to on the front side.\n"
                    },
                    "lbId": {
                        "type": "string",
                        "description": "The ID of the Load Balancer this frontend is attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The ACL name. If not provided it will be randomly generated.\n"
                    },
                    "timeoutClient": {
                        "type": "string",
                        "description": "Maximum inactivity time on the client side. (e.g. \u003cspan pulumi-lang-nodejs=\"`1s`\" pulumi-lang-dotnet=\"`1s`\" pulumi-lang-go=\"`1s`\" pulumi-lang-python=\"`1s`\" pulumi-lang-yaml=\"`1s`\" pulumi-lang-java=\"`1s`\"\u003e`1s`\u003c/span\u003e)\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time the frontend resource was updated.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancerfrontend.LoadbalancerFrontend has been deprecated in favor of scaleway.loadbalancers/frontend.Frontend"
        },
        "scaleway:index/loadbalancerIp:LoadbalancerIp": {
            "description": "Creates and manages Scaleway Load Balancer IP addresses.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/how-to/create-manage-flex-ips/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-ip-addresses-list-ip-addresses).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.loadbalancers.Ip(\"ip\", {reverse: \"my-reverse.com\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.loadbalancers.Ip(\"ip\", reverse=\"my-reverse.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip = new Scaleway.Loadbalancers.Ip(\"ip\", new()\n    {\n        Reverse = \"my-reverse.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewIp(ctx, \"ip\", \u0026loadbalancers.IpArgs{\n\t\t\tReverse: pulumi.String(\"my-reverse.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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip = new Ip(\"ip\", IpArgs.builder()\n            .reverse(\"my-reverse.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip:\n    type: scaleway:loadbalancers:Ip\n    properties:\n      reverse: my-reverse.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPv6\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ipv6 = new scaleway.loadbalancers.Ip(\"ipv6\", {isIpv6: true});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nipv6 = scaleway.loadbalancers.Ip(\"ipv6\", is_ipv6=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ipv6 = new Scaleway.Loadbalancers.Ip(\"ipv6\", new()\n    {\n        IsIpv6 = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancers.NewIp(ctx, \"ipv6\", \u0026loadbalancers.IpArgs{\n\t\t\tIsIpv6: 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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.IpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ipv6 = new Ip(\"ipv6\", IpArgs.builder()\n            .isIpv6(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ipv6:\n    type: scaleway:loadbalancers:Ip\n    properties:\n      isIpv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPs can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerIp:LoadbalancerIp ip01 fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "If true, creates a flexible IP with an IPv6 address.\n"
                },
                "lbId": {
                    "type": "string",
                    "description": "The associated Load Balancer ID if any\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003eyou want to attach the resource to"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the resource"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "ipAddress",
                "lbId",
                "organizationId",
                "projectId",
                "region",
                "reverse"
            ],
            "inputProperties": {
                "isIpv6": {
                    "type": "boolean",
                    "description": "If true, creates a flexible IP with an IPv6 address.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain associated with this IP.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerIp resources.\n",
                "properties": {
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP address\n"
                    },
                    "isIpv6": {
                        "type": "boolean",
                        "description": "If true, creates a flexible IP with an IPv6 address.\n",
                        "willReplaceOnChanges": true
                    },
                    "lbId": {
                        "type": "string",
                        "description": "The associated Load Balancer ID if any\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003eyou want to attach the resource to"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region of the resource"
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse domain associated with this IP.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with this IP.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancerip.LoadbalancerIp has been deprecated in favor of scaleway.loadbalancers/ip.Ip"
        },
        "scaleway:index/loadbalancerRoute:LoadbalancerRoute": {
            "description": "Creates and manages Scaleway Load Balancer routes.\n\nFor more information, see the [main documentation](https://www.scaleway.com/en/docs/load-balancer/how-to/create-manage-routes/) or [API documentation](https://www.scaleway.com/en/developers/api/load-balancer/zoned-api/#path-route).\n\n## Example Usage\n\n### With SNI for direction to TCP backends\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip01 = new scaleway.loadbalancers.Ip(\"ip01\", {});\nconst lb01 = new scaleway.loadbalancers.LoadBalancer(\"lb01\", {\n    ipId: ip01.id,\n    name: \"test-lb\",\n    type: \"lb-s\",\n});\nconst bkd01 = new scaleway.loadbalancers.Backend(\"bkd01\", {\n    lbId: lb01.id,\n    forwardProtocol: \"tcp\",\n    forwardPort: 80,\n    proxyProtocol: \"none\",\n});\nconst frt01 = new scaleway.loadbalancers.Frontend(\"frt01\", {\n    lbId: lb01.id,\n    backendId: bkd01.id,\n    inboundPort: 80,\n});\nconst rt01 = new scaleway.loadbalancers.Route(\"rt01\", {\n    frontendId: frt01.id,\n    backendId: bkd01.id,\n    matchSni: \"sni.scaleway.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip01 = scaleway.loadbalancers.Ip(\"ip01\")\nlb01 = scaleway.loadbalancers.LoadBalancer(\"lb01\",\n    ip_id=ip01.id,\n    name=\"test-lb\",\n    type=\"lb-s\")\nbkd01 = scaleway.loadbalancers.Backend(\"bkd01\",\n    lb_id=lb01.id,\n    forward_protocol=\"tcp\",\n    forward_port=80,\n    proxy_protocol=\"none\")\nfrt01 = scaleway.loadbalancers.Frontend(\"frt01\",\n    lb_id=lb01.id,\n    backend_id=bkd01.id,\n    inbound_port=80)\nrt01 = scaleway.loadbalancers.Route(\"rt01\",\n    frontend_id=frt01.id,\n    backend_id=bkd01.id,\n    match_sni=\"sni.scaleway.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip01 = new Scaleway.Loadbalancers.Ip(\"ip01\");\n\n    var lb01 = new Scaleway.Loadbalancers.LoadBalancer(\"lb01\", new()\n    {\n        IpId = ip01.Id,\n        Name = \"test-lb\",\n        Type = \"lb-s\",\n    });\n\n    var bkd01 = new Scaleway.Loadbalancers.Backend(\"bkd01\", new()\n    {\n        LbId = lb01.Id,\n        ForwardProtocol = \"tcp\",\n        ForwardPort = 80,\n        ProxyProtocol = \"none\",\n    });\n\n    var frt01 = new Scaleway.Loadbalancers.Frontend(\"frt01\", new()\n    {\n        LbId = lb01.Id,\n        BackendId = bkd01.Id,\n        InboundPort = 80,\n    });\n\n    var rt01 = new Scaleway.Loadbalancers.Route(\"rt01\", new()\n    {\n        FrontendId = frt01.Id,\n        BackendId = bkd01.Id,\n        MatchSni = \"sni.scaleway.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip01, err := loadbalancers.NewIp(ctx, \"ip01\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlb01, err := loadbalancers.NewLoadBalancer(ctx, \"lb01\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpId: ip01.ID(),\n\t\t\tName: pulumi.String(\"test-lb\"),\n\t\t\tType: pulumi.String(\"lb-s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbkd01, err := loadbalancers.NewBackend(ctx, \"bkd01\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            lb01.ID(),\n\t\t\tForwardProtocol: pulumi.String(\"tcp\"),\n\t\t\tForwardPort:     pulumi.Int(80),\n\t\t\tProxyProtocol:   pulumi.String(\"none\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrt01, err := loadbalancers.NewFrontend(ctx, \"frt01\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        lb01.ID(),\n\t\t\tBackendId:   bkd01.ID(),\n\t\t\tInboundPort: pulumi.Int(80),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewRoute(ctx, \"rt01\", \u0026loadbalancers.RouteArgs{\n\t\t\tFrontendId: frt01.ID(),\n\t\t\tBackendId:  bkd01.ID(),\n\t\t\tMatchSni:   pulumi.String(\"sni.scaleway.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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport com.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.loadbalancers.Route;\nimport com.pulumi.scaleway.loadbalancers.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip01 = new Ip(\"ip01\");\n\n        var lb01 = new LoadBalancer(\"lb01\", LoadBalancerArgs.builder()\n            .ipId(ip01.id())\n            .name(\"test-lb\")\n            .type(\"lb-s\")\n            .build());\n\n        var bkd01 = new Backend(\"bkd01\", BackendArgs.builder()\n            .lbId(lb01.id())\n            .forwardProtocol(\"tcp\")\n            .forwardPort(80)\n            .proxyProtocol(\"none\")\n            .build());\n\n        var frt01 = new Frontend(\"frt01\", FrontendArgs.builder()\n            .lbId(lb01.id())\n            .backendId(bkd01.id())\n            .inboundPort(80)\n            .build());\n\n        var rt01 = new Route(\"rt01\", RouteArgs.builder()\n            .frontendId(frt01.id())\n            .backendId(bkd01.id())\n            .matchSni(\"sni.scaleway.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip01:\n    type: scaleway:loadbalancers:Ip\n  lb01:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipId: ${ip01.id}\n      name: test-lb\n      type: lb-s\n  bkd01:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb01.id}\n      forwardProtocol: tcp\n      forwardPort: 80\n      proxyProtocol: none\n  frt01:\n    type: scaleway:loadbalancers:Frontend\n    properties:\n      lbId: ${lb01.id}\n      backendId: ${bkd01.id}\n      inboundPort: 80\n  rt01:\n    type: scaleway:loadbalancers:Route\n    properties:\n      frontendId: ${frt01.id}\n      backendId: ${bkd01.id}\n      matchSni: sni.scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With host-header for direction to HTTP backends\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip01 = new scaleway.loadbalancers.Ip(\"ip01\", {});\nconst lb01 = new scaleway.loadbalancers.LoadBalancer(\"lb01\", {\n    ipId: ip01.id,\n    name: \"test-lb\",\n    type: \"lb-s\",\n});\nconst bkd01 = new scaleway.loadbalancers.Backend(\"bkd01\", {\n    lbId: lb01.id,\n    forwardProtocol: \"http\",\n    forwardPort: 80,\n    proxyProtocol: \"none\",\n});\nconst frt01 = new scaleway.loadbalancers.Frontend(\"frt01\", {\n    lbId: lb01.id,\n    backendId: bkd01.id,\n    inboundPort: 80,\n});\nconst rt01 = new scaleway.loadbalancers.Route(\"rt01\", {\n    frontendId: frt01.id,\n    backendId: bkd01.id,\n    matchHostHeader: \"host.scaleway.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip01 = scaleway.loadbalancers.Ip(\"ip01\")\nlb01 = scaleway.loadbalancers.LoadBalancer(\"lb01\",\n    ip_id=ip01.id,\n    name=\"test-lb\",\n    type=\"lb-s\")\nbkd01 = scaleway.loadbalancers.Backend(\"bkd01\",\n    lb_id=lb01.id,\n    forward_protocol=\"http\",\n    forward_port=80,\n    proxy_protocol=\"none\")\nfrt01 = scaleway.loadbalancers.Frontend(\"frt01\",\n    lb_id=lb01.id,\n    backend_id=bkd01.id,\n    inbound_port=80)\nrt01 = scaleway.loadbalancers.Route(\"rt01\",\n    frontend_id=frt01.id,\n    backend_id=bkd01.id,\n    match_host_header=\"host.scaleway.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip01 = new Scaleway.Loadbalancers.Ip(\"ip01\");\n\n    var lb01 = new Scaleway.Loadbalancers.LoadBalancer(\"lb01\", new()\n    {\n        IpId = ip01.Id,\n        Name = \"test-lb\",\n        Type = \"lb-s\",\n    });\n\n    var bkd01 = new Scaleway.Loadbalancers.Backend(\"bkd01\", new()\n    {\n        LbId = lb01.Id,\n        ForwardProtocol = \"http\",\n        ForwardPort = 80,\n        ProxyProtocol = \"none\",\n    });\n\n    var frt01 = new Scaleway.Loadbalancers.Frontend(\"frt01\", new()\n    {\n        LbId = lb01.Id,\n        BackendId = bkd01.Id,\n        InboundPort = 80,\n    });\n\n    var rt01 = new Scaleway.Loadbalancers.Route(\"rt01\", new()\n    {\n        FrontendId = frt01.Id,\n        BackendId = bkd01.Id,\n        MatchHostHeader = \"host.scaleway.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip01, err := loadbalancers.NewIp(ctx, \"ip01\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlb01, err := loadbalancers.NewLoadBalancer(ctx, \"lb01\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpId: ip01.ID(),\n\t\t\tName: pulumi.String(\"test-lb\"),\n\t\t\tType: pulumi.String(\"lb-s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbkd01, err := loadbalancers.NewBackend(ctx, \"bkd01\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            lb01.ID(),\n\t\t\tForwardProtocol: pulumi.String(\"http\"),\n\t\t\tForwardPort:     pulumi.Int(80),\n\t\t\tProxyProtocol:   pulumi.String(\"none\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrt01, err := loadbalancers.NewFrontend(ctx, \"frt01\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        lb01.ID(),\n\t\t\tBackendId:   bkd01.ID(),\n\t\t\tInboundPort: pulumi.Int(80),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewRoute(ctx, \"rt01\", \u0026loadbalancers.RouteArgs{\n\t\t\tFrontendId:      frt01.ID(),\n\t\t\tBackendId:       bkd01.ID(),\n\t\t\tMatchHostHeader: pulumi.String(\"host.scaleway.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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport com.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.loadbalancers.Route;\nimport com.pulumi.scaleway.loadbalancers.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip01 = new Ip(\"ip01\");\n\n        var lb01 = new LoadBalancer(\"lb01\", LoadBalancerArgs.builder()\n            .ipId(ip01.id())\n            .name(\"test-lb\")\n            .type(\"lb-s\")\n            .build());\n\n        var bkd01 = new Backend(\"bkd01\", BackendArgs.builder()\n            .lbId(lb01.id())\n            .forwardProtocol(\"http\")\n            .forwardPort(80)\n            .proxyProtocol(\"none\")\n            .build());\n\n        var frt01 = new Frontend(\"frt01\", FrontendArgs.builder()\n            .lbId(lb01.id())\n            .backendId(bkd01.id())\n            .inboundPort(80)\n            .build());\n\n        var rt01 = new Route(\"rt01\", RouteArgs.builder()\n            .frontendId(frt01.id())\n            .backendId(bkd01.id())\n            .matchHostHeader(\"host.scaleway.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip01:\n    type: scaleway:loadbalancers:Ip\n  lb01:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipId: ${ip01.id}\n      name: test-lb\n      type: lb-s\n  bkd01:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb01.id}\n      forwardProtocol: http\n      forwardPort: 80\n      proxyProtocol: none\n  frt01:\n    type: scaleway:loadbalancers:Frontend\n    properties:\n      lbId: ${lb01.id}\n      backendId: ${bkd01.id}\n      inboundPort: 80\n  rt01:\n    type: scaleway:loadbalancers:Route\n    properties:\n      frontendId: ${frt01.id}\n      backendId: ${bkd01.id}\n      matchHostHeader: host.scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With path-begin matching for HTTP backends\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.loadbalancers.Ip(\"ip\", {});\nconst lb = new scaleway.loadbalancers.LoadBalancer(\"lb\", {\n    ipId: ip.id,\n    name: \"my-lb\",\n    type: \"lb-s\",\n});\nconst app = new scaleway.loadbalancers.Backend(\"app\", {\n    lbId: lb.id,\n    forwardProtocol: \"http\",\n    forwardPort: 80,\n    proxyProtocol: \"none\",\n});\nconst admin = new scaleway.loadbalancers.Backend(\"admin\", {\n    lbId: lb.id,\n    forwardProtocol: \"http\",\n    forwardPort: 8080,\n    proxyProtocol: \"none\",\n});\nconst frontend = new scaleway.loadbalancers.Frontend(\"frontend\", {\n    lbId: lb.id,\n    backendId: app.id,\n    inboundPort: 80,\n});\nconst adminRoute = new scaleway.loadbalancers.Route(\"admin_route\", {\n    frontendId: frontend.id,\n    backendId: admin.id,\n    matchPathBegin: \"/admin\",\n});\nconst defaultRoute = new scaleway.loadbalancers.Route(\"default_route\", {\n    frontendId: frontend.id,\n    backendId: app.id,\n    matchPathBegin: \"/\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.loadbalancers.Ip(\"ip\")\nlb = scaleway.loadbalancers.LoadBalancer(\"lb\",\n    ip_id=ip.id,\n    name=\"my-lb\",\n    type=\"lb-s\")\napp = scaleway.loadbalancers.Backend(\"app\",\n    lb_id=lb.id,\n    forward_protocol=\"http\",\n    forward_port=80,\n    proxy_protocol=\"none\")\nadmin = scaleway.loadbalancers.Backend(\"admin\",\n    lb_id=lb.id,\n    forward_protocol=\"http\",\n    forward_port=8080,\n    proxy_protocol=\"none\")\nfrontend = scaleway.loadbalancers.Frontend(\"frontend\",\n    lb_id=lb.id,\n    backend_id=app.id,\n    inbound_port=80)\nadmin_route = scaleway.loadbalancers.Route(\"admin_route\",\n    frontend_id=frontend.id,\n    backend_id=admin.id,\n    match_path_begin=\"/admin\")\ndefault_route = scaleway.loadbalancers.Route(\"default_route\",\n    frontend_id=frontend.id,\n    backend_id=app.id,\n    match_path_begin=\"/\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip = new Scaleway.Loadbalancers.Ip(\"ip\");\n\n    var lb = new Scaleway.Loadbalancers.LoadBalancer(\"lb\", new()\n    {\n        IpId = ip.Id,\n        Name = \"my-lb\",\n        Type = \"lb-s\",\n    });\n\n    var app = new Scaleway.Loadbalancers.Backend(\"app\", new()\n    {\n        LbId = lb.Id,\n        ForwardProtocol = \"http\",\n        ForwardPort = 80,\n        ProxyProtocol = \"none\",\n    });\n\n    var admin = new Scaleway.Loadbalancers.Backend(\"admin\", new()\n    {\n        LbId = lb.Id,\n        ForwardProtocol = \"http\",\n        ForwardPort = 8080,\n        ProxyProtocol = \"none\",\n    });\n\n    var frontend = new Scaleway.Loadbalancers.Frontend(\"frontend\", new()\n    {\n        LbId = lb.Id,\n        BackendId = app.Id,\n        InboundPort = 80,\n    });\n\n    var adminRoute = new Scaleway.Loadbalancers.Route(\"admin_route\", new()\n    {\n        FrontendId = frontend.Id,\n        BackendId = admin.Id,\n        MatchPathBegin = \"/admin\",\n    });\n\n    var defaultRoute = new Scaleway.Loadbalancers.Route(\"default_route\", new()\n    {\n        FrontendId = frontend.Id,\n        BackendId = app.Id,\n        MatchPathBegin = \"/\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/loadbalancers\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip, err := loadbalancers.NewIp(ctx, \"ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlb, err := loadbalancers.NewLoadBalancer(ctx, \"lb\", \u0026loadbalancers.LoadBalancerArgs{\n\t\t\tIpId: ip.ID(),\n\t\t\tName: pulumi.String(\"my-lb\"),\n\t\t\tType: pulumi.String(\"lb-s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := loadbalancers.NewBackend(ctx, \"app\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            lb.ID(),\n\t\t\tForwardProtocol: pulumi.String(\"http\"),\n\t\t\tForwardPort:     pulumi.Int(80),\n\t\t\tProxyProtocol:   pulumi.String(\"none\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := loadbalancers.NewBackend(ctx, \"admin\", \u0026loadbalancers.BackendArgs{\n\t\t\tLbId:            lb.ID(),\n\t\t\tForwardProtocol: pulumi.String(\"http\"),\n\t\t\tForwardPort:     pulumi.Int(8080),\n\t\t\tProxyProtocol:   pulumi.String(\"none\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfrontend, err := loadbalancers.NewFrontend(ctx, \"frontend\", \u0026loadbalancers.FrontendArgs{\n\t\t\tLbId:        lb.ID(),\n\t\t\tBackendId:   app.ID(),\n\t\t\tInboundPort: pulumi.Int(80),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewRoute(ctx, \"admin_route\", \u0026loadbalancers.RouteArgs{\n\t\t\tFrontendId:     frontend.ID(),\n\t\t\tBackendId:      admin.ID(),\n\t\t\tMatchPathBegin: pulumi.String(\"/admin\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancers.NewRoute(ctx, \"default_route\", \u0026loadbalancers.RouteArgs{\n\t\t\tFrontendId:     frontend.ID(),\n\t\t\tBackendId:      app.ID(),\n\t\t\tMatchPathBegin: pulumi.String(\"/\"),\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.scaleway.loadbalancers.Ip;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancer;\nimport com.pulumi.scaleway.loadbalancers.LoadBalancerArgs;\nimport com.pulumi.scaleway.loadbalancers.Backend;\nimport com.pulumi.scaleway.loadbalancers.BackendArgs;\nimport com.pulumi.scaleway.loadbalancers.Frontend;\nimport com.pulumi.scaleway.loadbalancers.FrontendArgs;\nimport com.pulumi.scaleway.loadbalancers.Route;\nimport com.pulumi.scaleway.loadbalancers.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip = new Ip(\"ip\");\n\n        var lb = new LoadBalancer(\"lb\", LoadBalancerArgs.builder()\n            .ipId(ip.id())\n            .name(\"my-lb\")\n            .type(\"lb-s\")\n            .build());\n\n        var app = new Backend(\"app\", BackendArgs.builder()\n            .lbId(lb.id())\n            .forwardProtocol(\"http\")\n            .forwardPort(80)\n            .proxyProtocol(\"none\")\n            .build());\n\n        var admin = new Backend(\"admin\", BackendArgs.builder()\n            .lbId(lb.id())\n            .forwardProtocol(\"http\")\n            .forwardPort(8080)\n            .proxyProtocol(\"none\")\n            .build());\n\n        var frontend = new Frontend(\"frontend\", FrontendArgs.builder()\n            .lbId(lb.id())\n            .backendId(app.id())\n            .inboundPort(80)\n            .build());\n\n        var adminRoute = new Route(\"adminRoute\", RouteArgs.builder()\n            .frontendId(frontend.id())\n            .backendId(admin.id())\n            .matchPathBegin(\"/admin\")\n            .build());\n\n        var defaultRoute = new Route(\"defaultRoute\", RouteArgs.builder()\n            .frontendId(frontend.id())\n            .backendId(app.id())\n            .matchPathBegin(\"/\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip:\n    type: scaleway:loadbalancers:Ip\n  lb:\n    type: scaleway:loadbalancers:LoadBalancer\n    properties:\n      ipId: ${ip.id}\n      name: my-lb\n      type: lb-s\n  app:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb.id}\n      forwardProtocol: http\n      forwardPort: 80\n      proxyProtocol: none\n  admin:\n    type: scaleway:loadbalancers:Backend\n    properties:\n      lbId: ${lb.id}\n      forwardProtocol: http\n      forwardPort: 8080\n      proxyProtocol: none\n  frontend:\n    type: scaleway:loadbalancers:Frontend\n    properties:\n      lbId: ${lb.id}\n      backendId: ${app.id}\n      inboundPort: 80\n  adminRoute:\n    type: scaleway:loadbalancers:Route\n    name: admin_route\n    properties:\n      frontendId: ${frontend.id}\n      backendId: ${admin.id}\n      matchPathBegin: /admin\n  defaultRoute:\n    type: scaleway:loadbalancers:Route\n    name: default_route\n    properties:\n      frontendId: ${frontend.id}\n      backendId: ${app.id}\n      matchPathBegin: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer frontends can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/loadbalancerRoute:LoadbalancerRoute main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "backendId": {
                    "type": "string",
                    "description": "The ID of the backend the route is associated with.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date on which the route was created.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the frontend the route is associated with.\n"
                },
                "matchHostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to match. Value to match in the HTTP Host request header from an incoming connection.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on HTTP Load Balancers.\n"
                },
                "matchPathBegin": {
                    "type": "string",
                    "description": "The value to match in the URL beginning path from an incoming request.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n"
                },
                "matchSni": {
                    "type": "string",
                    "description": "The Server Name Indication (SNI) value to match. Value to match in the Server Name Indication TLS extension (SNI) field from an incoming connection made via an SSL/TLS transport layer.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on TCP Load Balancers.\n"
                },
                "matchSubdomains": {
                    "type": "boolean",
                    "description": "If true, all subdomains will match.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date on which the route was last updated.\n"
                }
            },
            "required": [
                "backendId",
                "createdAt",
                "frontendId",
                "updatedAt"
            ],
            "inputProperties": {
                "backendId": {
                    "type": "string",
                    "description": "The ID of the backend the route is associated with.\n"
                },
                "frontendId": {
                    "type": "string",
                    "description": "The ID of the frontend the route is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "matchHostHeader": {
                    "type": "string",
                    "description": "The HTTP host header to match. Value to match in the HTTP Host request header from an incoming connection.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on HTTP Load Balancers.\n"
                },
                "matchPathBegin": {
                    "type": "string",
                    "description": "The value to match in the URL beginning path from an incoming request.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n"
                },
                "matchSni": {
                    "type": "string",
                    "description": "The Server Name Indication (SNI) value to match. Value to match in the Server Name Indication TLS extension (SNI) field from an incoming connection made via an SSL/TLS transport layer.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on TCP Load Balancers.\n"
                },
                "matchSubdomains": {
                    "type": "boolean",
                    "description": "If true, all subdomains will match.\n"
                }
            },
            "requiredInputs": [
                "backendId",
                "frontendId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadbalancerRoute resources.\n",
                "properties": {
                    "backendId": {
                        "type": "string",
                        "description": "The ID of the backend the route is associated with.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date on which the route was created.\n"
                    },
                    "frontendId": {
                        "type": "string",
                        "description": "The ID of the frontend the route is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "matchHostHeader": {
                        "type": "string",
                        "description": "The HTTP host header to match. Value to match in the HTTP Host request header from an incoming connection.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on HTTP Load Balancers.\n"
                    },
                    "matchPathBegin": {
                        "type": "string",
                        "description": "The value to match in the URL beginning path from an incoming request.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n"
                    },
                    "matchSni": {
                        "type": "string",
                        "description": "The Server Name Indication (SNI) value to match. Value to match in the Server Name Indication TLS extension (SNI) field from an incoming connection made via an SSL/TLS transport layer.\nOnly one of \u003cspan pulumi-lang-nodejs=\"`matchSni`\" pulumi-lang-dotnet=\"`MatchSni`\" pulumi-lang-go=\"`matchSni`\" pulumi-lang-python=\"`match_sni`\" pulumi-lang-yaml=\"`matchSni`\" pulumi-lang-java=\"`matchSni`\"\u003e`matchSni`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchHostHeader`\" pulumi-lang-dotnet=\"`MatchHostHeader`\" pulumi-lang-go=\"`matchHostHeader`\" pulumi-lang-python=\"`match_host_header`\" pulumi-lang-yaml=\"`matchHostHeader`\" pulumi-lang-java=\"`matchHostHeader`\"\u003e`matchHostHeader`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`matchPathBegin`\" pulumi-lang-dotnet=\"`MatchPathBegin`\" pulumi-lang-go=\"`matchPathBegin`\" pulumi-lang-python=\"`match_path_begin`\" pulumi-lang-yaml=\"`matchPathBegin`\" pulumi-lang-java=\"`matchPathBegin`\"\u003e`matchPathBegin`\u003c/span\u003e should be specified.\n\n\u003e **Important:** This field should be set for routes on TCP Load Balancers.\n"
                    },
                    "matchSubdomains": {
                        "type": "boolean",
                        "description": "If true, all subdomains will match.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date on which the route was last updated.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/loadbalancerroute.LoadbalancerRoute has been deprecated in favor of scaleway.loadbalancers/route.Route"
        },
        "scaleway:index/mnqNatsAccount:MnqNatsAccount": {
            "description": "Creates and manages Scaleway Messaging and Queuing NATS accounts.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/nats-overview/)\nTo use the Scaleway provider with the official NATS JetStream provider, check out the corresponding guide.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.NatsAccount(\"main\", {name: \"nats-account\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.NatsAccount(\"main\", name=\"nats-account\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.NatsAccount(\"main\", new()\n    {\n        Name = \"nats-account\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mnq.NewNatsAccount(ctx, \"main\", \u0026mnq.NatsAccountArgs{\n\t\t\tName: pulumi.String(\"nats-account\"),\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.scaleway.mnq.NatsAccount;\nimport com.pulumi.scaleway.mnq.NatsAccountArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new NatsAccount(\"main\", NatsAccountArgs.builder()\n            .name(\"nats-account\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:NatsAccount\n    properties:\n      name: nats-account\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNamespaces can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqNatsAccount:MnqNatsAccount main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint of the NATS service for this account.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the NATS account.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the\naccount is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which the account should be created.\n"
                }
            },
            "required": [
                "endpoint",
                "name",
                "projectId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The unique name of the NATS account.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the\naccount is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which the account should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqNatsAccount resources.\n",
                "properties": {
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint of the NATS service for this account.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the NATS account.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the\naccount is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which the account should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqnatsaccount.MnqNatsAccount has been deprecated in favor of scaleway.mnq/natsaccount.NatsAccount"
        },
        "scaleway:index/mnqNatsCredentials:MnqNatsCredentials": {
            "description": "Creates and manages Scaleway Messaging and Queuing NATS credentials.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/nats-overview/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.NatsAccount(\"main\", {name: \"nats-account\"});\nconst mainNatsCredentials = new scaleway.mnq.NatsCredentials(\"main\", {accountId: main.id});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.NatsAccount(\"main\", name=\"nats-account\")\nmain_nats_credentials = scaleway.mnq.NatsCredentials(\"main\", account_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.NatsAccount(\"main\", new()\n    {\n        Name = \"nats-account\",\n    });\n\n    var mainNatsCredentials = new Scaleway.Mnq.NatsCredentials(\"main\", new()\n    {\n        AccountId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewNatsAccount(ctx, \"main\", \u0026mnq.NatsAccountArgs{\n\t\t\tName: pulumi.String(\"nats-account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewNatsCredentials(ctx, \"main\", \u0026mnq.NatsCredentialsArgs{\n\t\t\tAccountId: main.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.pulumi.scaleway.mnq.NatsAccount;\nimport com.pulumi.scaleway.mnq.NatsAccountArgs;\nimport com.pulumi.scaleway.mnq.NatsCredentials;\nimport com.pulumi.scaleway.mnq.NatsCredentialsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new NatsAccount(\"main\", NatsAccountArgs.builder()\n            .name(\"nats-account\")\n            .build());\n\n        var mainNatsCredentials = new NatsCredentials(\"mainNatsCredentials\", NatsCredentialsArgs.builder()\n            .accountId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:NatsAccount\n    properties:\n      name: nats-account\n  mainNatsCredentials:\n    type: scaleway:mnq:NatsCredentials\n    name: main\n    properties:\n      accountId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNamespaces can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqNatsCredentials:MnqNatsCredentials main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "accountId": {
                    "type": "string",
                    "description": "The ID of the NATS account the credentials are generated from\n"
                },
                "file": {
                    "type": "string",
                    "description": "The content of the credentials file.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the NATS credentials.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which the account exists.\n"
                }
            },
            "required": [
                "accountId",
                "file",
                "name"
            ],
            "inputProperties": {
                "accountId": {
                    "type": "string",
                    "description": "The ID of the NATS account the credentials are generated from\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the NATS credentials.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which the account exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "accountId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqNatsCredentials resources.\n",
                "properties": {
                    "accountId": {
                        "type": "string",
                        "description": "The ID of the NATS account the credentials are generated from\n",
                        "willReplaceOnChanges": true
                    },
                    "file": {
                        "type": "string",
                        "description": "The content of the credentials file.\n",
                        "secret": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the NATS credentials.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which the account exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqnatscredentials.MnqNatsCredentials has been deprecated in favor of scaleway.mnq/natscredentials.NatsCredentials"
        },
        "scaleway:index/mnqSns:MnqSns": {
            "description": "Activates Scaleway Messaging and Queuing SNS in a Project.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/sns-overview/).\n\n## Example Usage\n\n### Basic\n\nActivate SNS in the default Project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sns(\"main\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sns(\"main\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sns(\"main\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mnq.NewSns(ctx, \"main\", 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.scaleway.mnq.Sns;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sns(\"main\");\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sns\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nActivate SNS in a specific Project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = scaleway.account.getProject({\n    name: \"default\",\n});\n// For specific Project in default region\nconst forProject = new scaleway.mnq.Sns(\"for_project\", {projectId: project.then(project =\u003e project.id)});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.get_project(name=\"default\")\n# For specific Project in default region\nfor_project = scaleway.mnq.Sns(\"for_project\", project_id=project.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // For specific Project in default region\n    var forProject = new Scaleway.Mnq.Sns(\"for_project\", new()\n    {\n        ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// For specific Project in default region\n\t\t_, err = mnq.NewSns(ctx, \"for_project\", \u0026mnq.SnsArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(project.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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.mnq.Sns;\nimport com.pulumi.scaleway.mnq.SnsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // For specific Project in default region\n        var forProject = new Sns(\"forProject\", SnsArgs.builder()\n            .projectId(project.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # For specific Project in default region\n  forProject:\n    type: scaleway:mnq:Sns\n    name: for_project\n    properties:\n      projectId: ${project.id}\nvariables:\n  project:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSNS status can be imported using `{region}/{project_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSns:MnqSns main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint of the SNS service for this Project.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project in which SNS will be enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS will be enabled.\n"
                }
            },
            "required": [
                "endpoint",
                "projectId"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project in which SNS will be enabled.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS will be enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSns resources.\n",
                "properties": {
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint of the SNS service for this Project.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project in which SNS will be enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which SNS will be enabled.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsns.MnqSns has been deprecated in favor of scaleway.mnq/sns.Sns"
        },
        "scaleway:index/mnqSnsCredentials:MnqSnsCredentials": {
            "description": "Creates and manages Scaleway Messaging and Queuing SNS credentials.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/sns-overview/)\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sns(\"main\", {});\nconst mainSnsCredentials = new scaleway.mnq.SnsCredentials(\"main\", {\n    projectId: main.projectId,\n    name: \"sns-credentials\",\n    permissions: {\n        canManage: false,\n        canReceive: true,\n        canPublish: false,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sns(\"main\")\nmain_sns_credentials = scaleway.mnq.SnsCredentials(\"main\",\n    project_id=main.project_id,\n    name=\"sns-credentials\",\n    permissions={\n        \"can_manage\": False,\n        \"can_receive\": True,\n        \"can_publish\": False,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sns(\"main\");\n\n    var mainSnsCredentials = new Scaleway.Mnq.SnsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"sns-credentials\",\n        Permissions = new Scaleway.Mnq.Inputs.SnsCredentialsPermissionsArgs\n        {\n            CanManage = false,\n            CanReceive = true,\n            CanPublish = false,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewSns(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewSnsCredentials(ctx, \"main\", \u0026mnq.SnsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"sns-credentials\"),\n\t\t\tPermissions: \u0026mnq.SnsCredentialsPermissionsArgs{\n\t\t\t\tCanManage:  pulumi.Bool(false),\n\t\t\t\tCanReceive: pulumi.Bool(true),\n\t\t\t\tCanPublish: 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.pulumi.scaleway.mnq.Sns;\nimport com.pulumi.scaleway.mnq.SnsCredentials;\nimport com.pulumi.scaleway.mnq.SnsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SnsCredentialsPermissionsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sns(\"main\");\n\n        var mainSnsCredentials = new SnsCredentials(\"mainSnsCredentials\", SnsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .name(\"sns-credentials\")\n            .permissions(SnsCredentialsPermissionsArgs.builder()\n                .canManage(false)\n                .canReceive(true)\n                .canPublish(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sns\n  mainSnsCredentials:\n    type: scaleway:mnq:SnsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: sns-credentials\n      permissions:\n        canManage: false\n        canReceive: true\n        canPublish: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSNS credentials can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSnsCredentials:MnqSnsCredentials main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The ID of the key.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SNS credentials.\n"
                },
                "permissions": {
                    "$ref": "#/types/scaleway:index/MnqSnsCredentialsPermissions:MnqSnsCredentialsPermissions",
                    "description": ". List of permissions associated with these credentials.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SNS is enabled.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret value of the key.\n",
                    "secret": true
                }
            },
            "required": [
                "accessKey",
                "name",
                "permissions",
                "projectId",
                "secretKey"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The unique name of the SNS credentials.\n"
                },
                "permissions": {
                    "$ref": "#/types/scaleway:index/MnqSnsCredentialsPermissions:MnqSnsCredentialsPermissions",
                    "description": ". List of permissions associated with these credentials.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSnsCredentials resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The ID of the key.\n",
                        "secret": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the SNS credentials.\n"
                    },
                    "permissions": {
                        "$ref": "#/types/scaleway:index/MnqSnsCredentialsPermissions:MnqSnsCredentialsPermissions",
                        "description": ". List of permissions associated with these credentials.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret value of the key.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsnscredentials.MnqSnsCredentials has been deprecated in favor of scaleway.mnq/snscredentials.SnsCredentials"
        },
        "scaleway:index/mnqSnsTopic:MnqSnsTopic": {
            "description": "Manage Scaleway Messaging and queuing SNS topics.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/how-to/create-manage-topics/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sns(\"main\", {});\nconst mainSnsCredentials = new scaleway.mnq.SnsCredentials(\"main\", {\n    projectId: main.projectId,\n    permissions: {\n        canManage: true,\n    },\n});\nconst topic = new scaleway.mnq.SnsTopic(\"topic\", {\n    projectId: main.projectId,\n    name: \"my-topic\",\n    accessKey: mainSnsCredentials.accessKey,\n    secretKey: mainSnsCredentials.secretKey,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sns(\"main\")\nmain_sns_credentials = scaleway.mnq.SnsCredentials(\"main\",\n    project_id=main.project_id,\n    permissions={\n        \"can_manage\": True,\n    })\ntopic = scaleway.mnq.SnsTopic(\"topic\",\n    project_id=main.project_id,\n    name=\"my-topic\",\n    access_key=main_sns_credentials.access_key,\n    secret_key=main_sns_credentials.secret_key)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sns(\"main\");\n\n    var mainSnsCredentials = new Scaleway.Mnq.SnsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Permissions = new Scaleway.Mnq.Inputs.SnsCredentialsPermissionsArgs\n        {\n            CanManage = true,\n        },\n    });\n\n    var topic = new Scaleway.Mnq.SnsTopic(\"topic\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"my-topic\",\n        AccessKey = mainSnsCredentials.AccessKey,\n        SecretKey = mainSnsCredentials.SecretKey,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewSns(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainSnsCredentials, err := mnq.NewSnsCredentials(ctx, \"main\", \u0026mnq.SnsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tPermissions: \u0026mnq.SnsCredentialsPermissionsArgs{\n\t\t\t\tCanManage: 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 = mnq.NewSnsTopic(ctx, \"topic\", \u0026mnq.SnsTopicArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"my-topic\"),\n\t\t\tAccessKey: mainSnsCredentials.AccessKey,\n\t\t\tSecretKey: mainSnsCredentials.SecretKey,\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.scaleway.mnq.Sns;\nimport com.pulumi.scaleway.mnq.SnsCredentials;\nimport com.pulumi.scaleway.mnq.SnsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SnsCredentialsPermissionsArgs;\nimport com.pulumi.scaleway.mnq.SnsTopic;\nimport com.pulumi.scaleway.mnq.SnsTopicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sns(\"main\");\n\n        var mainSnsCredentials = new SnsCredentials(\"mainSnsCredentials\", SnsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .permissions(SnsCredentialsPermissionsArgs.builder()\n                .canManage(true)\n                .build())\n            .build());\n\n        var topic = new SnsTopic(\"topic\", SnsTopicArgs.builder()\n            .projectId(main.projectId())\n            .name(\"my-topic\")\n            .accessKey(mainSnsCredentials.accessKey())\n            .secretKey(mainSnsCredentials.secretKey())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sns\n  mainSnsCredentials:\n    type: scaleway:mnq:SnsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      permissions:\n        canManage: true\n  topic:\n    type: scaleway:mnq:SnsTopic\n    properties:\n      projectId: ${main.projectId}\n      name: my-topic\n      accessKey: ${mainSnsCredentials.accessKey}\n      secretKey: ${mainSnsCredentials.secretKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSNS topics can be imported using `{region}/{project-id}/{topic-name}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSnsTopic:MnqSnsTopic main fr-par/11111111111111111111111111111111/my-topic\n```\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SNS credentials.\n",
                    "secret": true
                },
                "arn": {
                    "type": "string",
                    "description": "The ARN of the topic\n"
                },
                "contentBasedDeduplication": {
                    "type": "boolean",
                    "description": "Specifies whether to enable content-based deduplication.\n"
                },
                "fifoTopic": {
                    "type": "boolean",
                    "description": "Whether the topic is a FIFO topic. If true, the topic name must end with .fifo.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SNS topic. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n"
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n"
                },
                "owner": {
                    "type": "string",
                    "description": "Owner of the SNS topic, should have format 'project-${project_id}'"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS is enabled.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SNS credentials.\n",
                    "secret": true
                },
                "snsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n"
                }
            },
            "required": [
                "accessKey",
                "arn",
                "contentBasedDeduplication",
                "fifoTopic",
                "name",
                "namePrefix",
                "owner",
                "projectId",
                "secretKey"
            ],
            "inputProperties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SNS credentials.\n",
                    "secret": true
                },
                "contentBasedDeduplication": {
                    "type": "boolean",
                    "description": "Specifies whether to enable content-based deduplication.\n"
                },
                "fifoTopic": {
                    "type": "boolean",
                    "description": "Whether the topic is a FIFO topic. If true, the topic name must end with .fifo.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SNS topic. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SNS credentials.\n",
                    "secret": true
                },
                "snsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n"
                }
            },
            "requiredInputs": [
                "accessKey",
                "secretKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSnsTopic resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key of the SNS credentials.\n",
                        "secret": true
                    },
                    "arn": {
                        "type": "string",
                        "description": "The ARN of the topic\n"
                    },
                    "contentBasedDeduplication": {
                        "type": "boolean",
                        "description": "Specifies whether to enable content-based deduplication.\n"
                    },
                    "fifoTopic": {
                        "type": "boolean",
                        "description": "Whether the topic is a FIFO topic. If true, the topic name must end with .fifo.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the SNS topic. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "namePrefix": {
                        "type": "string",
                        "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n",
                        "willReplaceOnChanges": true
                    },
                    "owner": {
                        "type": "string",
                        "description": "Owner of the SNS topic, should have format 'project-${project_id}'"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret key of the SNS credentials.\n",
                        "secret": true
                    },
                    "snsEndpoint": {
                        "type": "string",
                        "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsnstopic.MnqSnsTopic has been deprecated in favor of scaleway.mnq/snstopic.SnsTopic"
        },
        "scaleway:index/mnqSnsTopicSubscription:MnqSnsTopicSubscription": {
            "description": "Manages Scaleway Messaging and Queuing SNS topic subscriptions.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/sns-overview/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// For default project in default region\nconst main = new scaleway.mnq.Sns(\"main\", {});\nconst mainSnsCredentials = new scaleway.mnq.SnsCredentials(\"main\", {\n    projectId: main.projectId,\n    permissions: {\n        canManage: true,\n        canPublish: true,\n        canReceive: true,\n    },\n});\nconst topic = new scaleway.mnq.SnsTopic(\"topic\", {\n    projectId: main.projectId,\n    name: \"my-topic\",\n    accessKey: mainSnsCredentials.accessKey,\n    secretKey: mainSnsCredentials.secretKey,\n});\nconst mainSnsTopicSubscription = new scaleway.mnq.SnsTopicSubscription(\"main\", {\n    projectId: main.projectId,\n    accessKey: mainSnsCredentials.accessKey,\n    secretKey: mainSnsCredentials.secretKey,\n    topicId: topic.id,\n    protocol: \"http\",\n    endpoint: \"http://example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n# For default project in default region\nmain = scaleway.mnq.Sns(\"main\")\nmain_sns_credentials = scaleway.mnq.SnsCredentials(\"main\",\n    project_id=main.project_id,\n    permissions={\n        \"can_manage\": True,\n        \"can_publish\": True,\n        \"can_receive\": True,\n    })\ntopic = scaleway.mnq.SnsTopic(\"topic\",\n    project_id=main.project_id,\n    name=\"my-topic\",\n    access_key=main_sns_credentials.access_key,\n    secret_key=main_sns_credentials.secret_key)\nmain_sns_topic_subscription = scaleway.mnq.SnsTopicSubscription(\"main\",\n    project_id=main.project_id,\n    access_key=main_sns_credentials.access_key,\n    secret_key=main_sns_credentials.secret_key,\n    topic_id=topic.id,\n    protocol=\"http\",\n    endpoint=\"http://example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // For default project in default region\n    var main = new Scaleway.Mnq.Sns(\"main\");\n\n    var mainSnsCredentials = new Scaleway.Mnq.SnsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Permissions = new Scaleway.Mnq.Inputs.SnsCredentialsPermissionsArgs\n        {\n            CanManage = true,\n            CanPublish = true,\n            CanReceive = true,\n        },\n    });\n\n    var topic = new Scaleway.Mnq.SnsTopic(\"topic\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"my-topic\",\n        AccessKey = mainSnsCredentials.AccessKey,\n        SecretKey = mainSnsCredentials.SecretKey,\n    });\n\n    var mainSnsTopicSubscription = new Scaleway.Mnq.SnsTopicSubscription(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        AccessKey = mainSnsCredentials.AccessKey,\n        SecretKey = mainSnsCredentials.SecretKey,\n        TopicId = topic.Id,\n        Protocol = \"http\",\n        Endpoint = \"http://example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// For default project in default region\n\t\tmain, err := mnq.NewSns(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainSnsCredentials, err := mnq.NewSnsCredentials(ctx, \"main\", \u0026mnq.SnsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tPermissions: \u0026mnq.SnsCredentialsPermissionsArgs{\n\t\t\t\tCanManage:  pulumi.Bool(true),\n\t\t\t\tCanPublish: pulumi.Bool(true),\n\t\t\t\tCanReceive: 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\ttopic, err := mnq.NewSnsTopic(ctx, \"topic\", \u0026mnq.SnsTopicArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"my-topic\"),\n\t\t\tAccessKey: mainSnsCredentials.AccessKey,\n\t\t\tSecretKey: mainSnsCredentials.SecretKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewSnsTopicSubscription(ctx, \"main\", \u0026mnq.SnsTopicSubscriptionArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tAccessKey: mainSnsCredentials.AccessKey,\n\t\t\tSecretKey: mainSnsCredentials.SecretKey,\n\t\t\tTopicId:   topic.ID(),\n\t\t\tProtocol:  pulumi.String(\"http\"),\n\t\t\tEndpoint:  pulumi.String(\"http://example.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.scaleway.mnq.Sns;\nimport com.pulumi.scaleway.mnq.SnsCredentials;\nimport com.pulumi.scaleway.mnq.SnsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SnsCredentialsPermissionsArgs;\nimport com.pulumi.scaleway.mnq.SnsTopic;\nimport com.pulumi.scaleway.mnq.SnsTopicArgs;\nimport com.pulumi.scaleway.mnq.SnsTopicSubscription;\nimport com.pulumi.scaleway.mnq.SnsTopicSubscriptionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // For default project in default region\n        var main = new Sns(\"main\");\n\n        var mainSnsCredentials = new SnsCredentials(\"mainSnsCredentials\", SnsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .permissions(SnsCredentialsPermissionsArgs.builder()\n                .canManage(true)\n                .canPublish(true)\n                .canReceive(true)\n                .build())\n            .build());\n\n        var topic = new SnsTopic(\"topic\", SnsTopicArgs.builder()\n            .projectId(main.projectId())\n            .name(\"my-topic\")\n            .accessKey(mainSnsCredentials.accessKey())\n            .secretKey(mainSnsCredentials.secretKey())\n            .build());\n\n        var mainSnsTopicSubscription = new SnsTopicSubscription(\"mainSnsTopicSubscription\", SnsTopicSubscriptionArgs.builder()\n            .projectId(main.projectId())\n            .accessKey(mainSnsCredentials.accessKey())\n            .secretKey(mainSnsCredentials.secretKey())\n            .topicId(topic.id())\n            .protocol(\"http\")\n            .endpoint(\"http://example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # For default project in default region\n  main:\n    type: scaleway:mnq:Sns\n  mainSnsCredentials:\n    type: scaleway:mnq:SnsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      permissions:\n        canManage: true\n        canPublish: true\n        canReceive: true\n  topic:\n    type: scaleway:mnq:SnsTopic\n    properties:\n      projectId: ${main.projectId}\n      name: my-topic\n      accessKey: ${mainSnsCredentials.accessKey}\n      secretKey: ${mainSnsCredentials.secretKey}\n  mainSnsTopicSubscription:\n    type: scaleway:mnq:SnsTopicSubscription\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      accessKey: ${mainSnsCredentials.accessKey}\n      secretKey: ${mainSnsCredentials.secretKey}\n      topicId: ${topic.id}\n      protocol: http\n      endpoint: http://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSNS topic subscriptions can be imported using `{region}/{project-id}/{topic-name}/{subscription-id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSnsTopicSubscription:MnqSnsTopicSubscription main fr-par/11111111111111111111111111111111/my-topic/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SNS credentials.\n",
                    "secret": true
                },
                "arn": {
                    "type": "string",
                    "description": "The ARN of the topic subscription\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint of the subscription"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol of the SNS topic subscription.\n"
                },
                "redrivePolicy": {
                    "type": "boolean",
                    "description": "Activate JSON redrive policy.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS is enabled.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SNS credentials.\n",
                    "secret": true
                },
                "snsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n"
                },
                "topicArn": {
                    "type": "string",
                    "description": "The ARN of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required.\n"
                },
                "topicId": {
                    "type": "string",
                    "description": "The ID of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "accessKey",
                "arn",
                "projectId",
                "protocol",
                "redrivePolicy",
                "secretKey"
            ],
            "inputProperties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SNS credentials.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint of the subscription",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol of the SNS topic subscription.\n",
                    "willReplaceOnChanges": true
                },
                "redrivePolicy": {
                    "type": "boolean",
                    "description": "Activate JSON redrive policy.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SNS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SNS credentials.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "snsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n",
                    "willReplaceOnChanges": true
                },
                "topicArn": {
                    "type": "string",
                    "description": "The ARN of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required.\n",
                    "willReplaceOnChanges": true
                },
                "topicId": {
                    "type": "string",
                    "description": "The ID of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "accessKey",
                "protocol",
                "secretKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSnsTopicSubscription resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key of the SNS credentials.\n",
                        "secret": true,
                        "willReplaceOnChanges": true
                    },
                    "arn": {
                        "type": "string",
                        "description": "The ARN of the topic subscription\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "Endpoint of the subscription",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "protocol": {
                        "type": "string",
                        "description": "Protocol of the SNS topic subscription.\n",
                        "willReplaceOnChanges": true
                    },
                    "redrivePolicy": {
                        "type": "boolean",
                        "description": "Activate JSON redrive policy.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which SNS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret key of the SNS credentials.\n",
                        "secret": true,
                        "willReplaceOnChanges": true
                    },
                    "snsEndpoint": {
                        "type": "string",
                        "description": "The endpoint of the SNS service. Can contain a {region} placeholder. Defaults to `https://sns.mnq.{region}.scaleway.com`.\n",
                        "willReplaceOnChanges": true
                    },
                    "topicArn": {
                        "type": "string",
                        "description": "The ARN of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required.\n",
                        "willReplaceOnChanges": true
                    },
                    "topicId": {
                        "type": "string",
                        "description": "The ID of the topic. Either \u003cspan pulumi-lang-nodejs=\"`topicId`\" pulumi-lang-dotnet=\"`TopicId`\" pulumi-lang-go=\"`topicId`\" pulumi-lang-python=\"`topic_id`\" pulumi-lang-yaml=\"`topicId`\" pulumi-lang-java=\"`topicId`\"\u003e`topicId`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`topicArn`\" pulumi-lang-dotnet=\"`TopicArn`\" pulumi-lang-go=\"`topicArn`\" pulumi-lang-python=\"`topic_arn`\" pulumi-lang-yaml=\"`topicArn`\" pulumi-lang-java=\"`topicArn`\"\u003e`topicArn`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsnstopicsubscription.MnqSnsTopicSubscription has been deprecated in favor of scaleway.mnq/snstopicsubscription.SnsTopicSubscription"
        },
        "scaleway:index/mnqSqs:MnqSqs": {
            "description": "Activate Scaleway Messaging and Queuing SQS in a Project.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/sqs-overview/).\n\n## Example Usage\n\n### Basic\n\nActivate SQS in the default Project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sqs(\"main\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sqs(\"main\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sqs(\"main\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mnq.NewSqs(ctx, \"main\", 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.scaleway.mnq.Sqs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sqs(\"main\");\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sqs\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nActivate SQS for a specific project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst project = scaleway.account.getProject({\n    name: \"default\",\n});\nconst forProject = new scaleway.mnq.Sqs(\"for_project\", {projectId: project.then(project =\u003e project.id)});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nproject = scaleway.account.get_project(name=\"default\")\nfor_project = scaleway.mnq.Sqs(\"for_project\", project_id=project.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var forProject = new Scaleway.Mnq.Sqs(\"for_project\", new()\n    {\n        ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewSqs(ctx, \"for_project\", \u0026mnq.SqsArgs{\n\t\t\tProjectId: pulumi.String(pulumi.String(project.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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.mnq.Sqs;\nimport com.pulumi.scaleway.mnq.SqsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        var forProject = new Sqs(\"forProject\", SqsArgs.builder()\n            .projectId(project.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  forProject:\n    type: scaleway:mnq:Sqs\n    name: for_project\n    properties:\n      projectId: ${project.id}\nvariables:\n  project:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSQS status can be imported using the `{region}/{project_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSqs:MnqSqs main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint of the SQS service for this Project.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS will be enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SQS will be enabled.\n"
                }
            },
            "required": [
                "endpoint",
                "projectId"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS will be enabled.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region\nin which SQS will be enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSqs resources.\n",
                "properties": {
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint of the SQS service for this Project.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS will be enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region\nin which SQS will be enabled.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsqs.MnqSqs has been deprecated in favor of scaleway.mnq/sqs.Sqs"
        },
        "scaleway:index/mnqSqsCredentials:MnqSqsCredentials": {
            "description": "Creates and manages Scaleway Messaging and Queuing SQS credentials.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/reference-content/sqs-overview/)\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sqs(\"main\", {});\nconst mainSqsCredentials = new scaleway.mnq.SqsCredentials(\"main\", {\n    projectId: main.projectId,\n    name: \"sqs-credentials\",\n    permissions: {\n        canManage: false,\n        canReceive: true,\n        canPublish: false,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sqs(\"main\")\nmain_sqs_credentials = scaleway.mnq.SqsCredentials(\"main\",\n    project_id=main.project_id,\n    name=\"sqs-credentials\",\n    permissions={\n        \"can_manage\": False,\n        \"can_receive\": True,\n        \"can_publish\": False,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sqs(\"main\");\n\n    var mainSqsCredentials = new Scaleway.Mnq.SqsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"sqs-credentials\",\n        Permissions = new Scaleway.Mnq.Inputs.SqsCredentialsPermissionsArgs\n        {\n            CanManage = false,\n            CanReceive = true,\n            CanPublish = false,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewSqs(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewSqsCredentials(ctx, \"main\", \u0026mnq.SqsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"sqs-credentials\"),\n\t\t\tPermissions: \u0026mnq.SqsCredentialsPermissionsArgs{\n\t\t\t\tCanManage:  pulumi.Bool(false),\n\t\t\t\tCanReceive: pulumi.Bool(true),\n\t\t\t\tCanPublish: 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.pulumi.scaleway.mnq.Sqs;\nimport com.pulumi.scaleway.mnq.SqsCredentials;\nimport com.pulumi.scaleway.mnq.SqsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SqsCredentialsPermissionsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sqs(\"main\");\n\n        var mainSqsCredentials = new SqsCredentials(\"mainSqsCredentials\", SqsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .name(\"sqs-credentials\")\n            .permissions(SqsCredentialsPermissionsArgs.builder()\n                .canManage(false)\n                .canReceive(true)\n                .canPublish(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sqs\n  mainSqsCredentials:\n    type: scaleway:mnq:SqsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: sqs-credentials\n      permissions:\n        canManage: false\n        canReceive: true\n        canPublish: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSQS credentials can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mnqSqsCredentials:MnqSqsCredentials main fr-par/11111111111111111111111111111111\n```\n\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The ID of the key.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SQS credentials.\n"
                },
                "permissions": {
                    "$ref": "#/types/scaleway:index/MnqSqsCredentialsPermissions:MnqSqsCredentialsPermissions",
                    "description": ". List of permissions associated with these credentials.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SQS is enabled.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret value of the key.\n",
                    "secret": true
                }
            },
            "required": [
                "accessKey",
                "name",
                "permissions",
                "projectId",
                "secretKey"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The unique name of the SQS credentials.\n"
                },
                "permissions": {
                    "$ref": "#/types/scaleway:index/MnqSqsCredentialsPermissions:MnqSqsCredentialsPermissions",
                    "description": ". List of permissions associated with these credentials.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SQS is enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSqsCredentials resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The ID of the key.\n",
                        "secret": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the SQS credentials.\n"
                    },
                    "permissions": {
                        "$ref": "#/types/scaleway:index/MnqSqsCredentialsPermissions:MnqSqsCredentialsPermissions",
                        "description": ". List of permissions associated with these credentials.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which SQS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret value of the key.\n",
                        "secret": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsqscredentials.MnqSqsCredentials has been deprecated in favor of scaleway.mnq/sqscredentials.SqsCredentials"
        },
        "scaleway:index/mnqSqsQueue:MnqSqsQueue": {
            "description": "Creates and manages Scaleway Messaging and Queuing SQS queues.\nFor further information, see\nour [main documentation](https://www.scaleway.com/en/docs/messaging/how-to/create-manage-queues/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sqs(\"main\", {});\nconst mainSqsCredentials = new scaleway.mnq.SqsCredentials(\"main\", {\n    projectId: main.projectId,\n    name: \"sqs-credentials\",\n    permissions: {\n        canManage: true,\n        canReceive: false,\n        canPublish: false,\n    },\n});\nconst mainSqsQueue = new scaleway.mnq.SqsQueue(\"main\", {\n    projectId: main.projectId,\n    name: \"my-queue\",\n    sqsEndpoint: main.endpoint,\n    accessKey: mainSqsCredentials.accessKey,\n    secretKey: mainSqsCredentials.secretKey,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sqs(\"main\")\nmain_sqs_credentials = scaleway.mnq.SqsCredentials(\"main\",\n    project_id=main.project_id,\n    name=\"sqs-credentials\",\n    permissions={\n        \"can_manage\": True,\n        \"can_receive\": False,\n        \"can_publish\": False,\n    })\nmain_sqs_queue = scaleway.mnq.SqsQueue(\"main\",\n    project_id=main.project_id,\n    name=\"my-queue\",\n    sqs_endpoint=main.endpoint,\n    access_key=main_sqs_credentials.access_key,\n    secret_key=main_sqs_credentials.secret_key)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sqs(\"main\");\n\n    var mainSqsCredentials = new Scaleway.Mnq.SqsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"sqs-credentials\",\n        Permissions = new Scaleway.Mnq.Inputs.SqsCredentialsPermissionsArgs\n        {\n            CanManage = true,\n            CanReceive = false,\n            CanPublish = false,\n        },\n    });\n\n    var mainSqsQueue = new Scaleway.Mnq.SqsQueue(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"my-queue\",\n        SqsEndpoint = main.Endpoint,\n        AccessKey = mainSqsCredentials.AccessKey,\n        SecretKey = mainSqsCredentials.SecretKey,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewSqs(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainSqsCredentials, err := mnq.NewSqsCredentials(ctx, \"main\", \u0026mnq.SqsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"sqs-credentials\"),\n\t\t\tPermissions: \u0026mnq.SqsCredentialsPermissionsArgs{\n\t\t\t\tCanManage:  pulumi.Bool(true),\n\t\t\t\tCanReceive: pulumi.Bool(false),\n\t\t\t\tCanPublish: 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\t_, err = mnq.NewSqsQueue(ctx, \"main\", \u0026mnq.SqsQueueArgs{\n\t\t\tProjectId:   main.ProjectId,\n\t\t\tName:        pulumi.String(\"my-queue\"),\n\t\t\tSqsEndpoint: main.Endpoint,\n\t\t\tAccessKey:   mainSqsCredentials.AccessKey,\n\t\t\tSecretKey:   mainSqsCredentials.SecretKey,\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.scaleway.mnq.Sqs;\nimport com.pulumi.scaleway.mnq.SqsCredentials;\nimport com.pulumi.scaleway.mnq.SqsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SqsCredentialsPermissionsArgs;\nimport com.pulumi.scaleway.mnq.SqsQueue;\nimport com.pulumi.scaleway.mnq.SqsQueueArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sqs(\"main\");\n\n        var mainSqsCredentials = new SqsCredentials(\"mainSqsCredentials\", SqsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .name(\"sqs-credentials\")\n            .permissions(SqsCredentialsPermissionsArgs.builder()\n                .canManage(true)\n                .canReceive(false)\n                .canPublish(false)\n                .build())\n            .build());\n\n        var mainSqsQueue = new SqsQueue(\"mainSqsQueue\", SqsQueueArgs.builder()\n            .projectId(main.projectId())\n            .name(\"my-queue\")\n            .sqsEndpoint(main.endpoint())\n            .accessKey(mainSqsCredentials.accessKey())\n            .secretKey(mainSqsCredentials.secretKey())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sqs\n  mainSqsCredentials:\n    type: scaleway:mnq:SqsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: sqs-credentials\n      permissions:\n        canManage: true\n        canReceive: false\n        canPublish: false\n  mainSqsQueue:\n    type: scaleway:mnq:SqsQueue\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: my-queue\n      sqsEndpoint: ${main.endpoint}\n      accessKey: ${mainSqsCredentials.accessKey}\n      secretKey: ${mainSqsCredentials.secretKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Dead Letter Queue\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mnq.Sqs(\"main\", {});\nconst mainSqsCredentials = new scaleway.mnq.SqsCredentials(\"main\", {\n    projectId: main.projectId,\n    name: \"sqs-credentials\",\n    permissions: {\n        canManage: true,\n        canReceive: false,\n        canPublish: false,\n    },\n});\nconst deadLetter = new scaleway.mnq.SqsQueue(\"dead_letter\", {\n    projectId: main.projectId,\n    name: \"dead-letter-queue\",\n    sqsEndpoint: main.endpoint,\n    accessKey: mainSqsCredentials.accessKey,\n    secretKey: mainSqsCredentials.secretKey,\n});\nconst mainSqsQueue = new scaleway.mnq.SqsQueue(\"main\", {\n    projectId: main.projectId,\n    name: \"my-queue\",\n    sqsEndpoint: main.endpoint,\n    accessKey: mainSqsCredentials.accessKey,\n    secretKey: mainSqsCredentials.secretKey,\n    deadLetterQueue: {\n        id: deadLetter.id,\n        maxReceiveCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mnq.Sqs(\"main\")\nmain_sqs_credentials = scaleway.mnq.SqsCredentials(\"main\",\n    project_id=main.project_id,\n    name=\"sqs-credentials\",\n    permissions={\n        \"can_manage\": True,\n        \"can_receive\": False,\n        \"can_publish\": False,\n    })\ndead_letter = scaleway.mnq.SqsQueue(\"dead_letter\",\n    project_id=main.project_id,\n    name=\"dead-letter-queue\",\n    sqs_endpoint=main.endpoint,\n    access_key=main_sqs_credentials.access_key,\n    secret_key=main_sqs_credentials.secret_key)\nmain_sqs_queue = scaleway.mnq.SqsQueue(\"main\",\n    project_id=main.project_id,\n    name=\"my-queue\",\n    sqs_endpoint=main.endpoint,\n    access_key=main_sqs_credentials.access_key,\n    secret_key=main_sqs_credentials.secret_key,\n    dead_letter_queue={\n        \"id\": dead_letter.id,\n        \"max_receive_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mnq.Sqs(\"main\");\n\n    var mainSqsCredentials = new Scaleway.Mnq.SqsCredentials(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"sqs-credentials\",\n        Permissions = new Scaleway.Mnq.Inputs.SqsCredentialsPermissionsArgs\n        {\n            CanManage = true,\n            CanReceive = false,\n            CanPublish = false,\n        },\n    });\n\n    var deadLetter = new Scaleway.Mnq.SqsQueue(\"dead_letter\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"dead-letter-queue\",\n        SqsEndpoint = main.Endpoint,\n        AccessKey = mainSqsCredentials.AccessKey,\n        SecretKey = mainSqsCredentials.SecretKey,\n    });\n\n    var mainSqsQueue = new Scaleway.Mnq.SqsQueue(\"main\", new()\n    {\n        ProjectId = main.ProjectId,\n        Name = \"my-queue\",\n        SqsEndpoint = main.Endpoint,\n        AccessKey = mainSqsCredentials.AccessKey,\n        SecretKey = mainSqsCredentials.SecretKey,\n        DeadLetterQueue = new Scaleway.Mnq.Inputs.SqsQueueDeadLetterQueueArgs\n        {\n            Id = deadLetter.Id,\n            MaxReceiveCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := mnq.NewSqs(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainSqsCredentials, err := mnq.NewSqsCredentials(ctx, \"main\", \u0026mnq.SqsCredentialsArgs{\n\t\t\tProjectId: main.ProjectId,\n\t\t\tName:      pulumi.String(\"sqs-credentials\"),\n\t\t\tPermissions: \u0026mnq.SqsCredentialsPermissionsArgs{\n\t\t\t\tCanManage:  pulumi.Bool(true),\n\t\t\t\tCanReceive: pulumi.Bool(false),\n\t\t\t\tCanPublish: 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\tdeadLetter, err := mnq.NewSqsQueue(ctx, \"dead_letter\", \u0026mnq.SqsQueueArgs{\n\t\t\tProjectId:   main.ProjectId,\n\t\t\tName:        pulumi.String(\"dead-letter-queue\"),\n\t\t\tSqsEndpoint: main.Endpoint,\n\t\t\tAccessKey:   mainSqsCredentials.AccessKey,\n\t\t\tSecretKey:   mainSqsCredentials.SecretKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = mnq.NewSqsQueue(ctx, \"main\", \u0026mnq.SqsQueueArgs{\n\t\t\tProjectId:   main.ProjectId,\n\t\t\tName:        pulumi.String(\"my-queue\"),\n\t\t\tSqsEndpoint: main.Endpoint,\n\t\t\tAccessKey:   mainSqsCredentials.AccessKey,\n\t\t\tSecretKey:   mainSqsCredentials.SecretKey,\n\t\t\tDeadLetterQueue: \u0026mnq.SqsQueueDeadLetterQueueArgs{\n\t\t\t\tId:              deadLetter.ID(),\n\t\t\t\tMaxReceiveCount: pulumi.Int(3),\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.scaleway.mnq.Sqs;\nimport com.pulumi.scaleway.mnq.SqsCredentials;\nimport com.pulumi.scaleway.mnq.SqsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SqsCredentialsPermissionsArgs;\nimport com.pulumi.scaleway.mnq.SqsQueue;\nimport com.pulumi.scaleway.mnq.SqsQueueArgs;\nimport com.pulumi.scaleway.mnq.inputs.SqsQueueDeadLetterQueueArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Sqs(\"main\");\n\n        var mainSqsCredentials = new SqsCredentials(\"mainSqsCredentials\", SqsCredentialsArgs.builder()\n            .projectId(main.projectId())\n            .name(\"sqs-credentials\")\n            .permissions(SqsCredentialsPermissionsArgs.builder()\n                .canManage(true)\n                .canReceive(false)\n                .canPublish(false)\n                .build())\n            .build());\n\n        var deadLetter = new SqsQueue(\"deadLetter\", SqsQueueArgs.builder()\n            .projectId(main.projectId())\n            .name(\"dead-letter-queue\")\n            .sqsEndpoint(main.endpoint())\n            .accessKey(mainSqsCredentials.accessKey())\n            .secretKey(mainSqsCredentials.secretKey())\n            .build());\n\n        var mainSqsQueue = new SqsQueue(\"mainSqsQueue\", SqsQueueArgs.builder()\n            .projectId(main.projectId())\n            .name(\"my-queue\")\n            .sqsEndpoint(main.endpoint())\n            .accessKey(mainSqsCredentials.accessKey())\n            .secretKey(mainSqsCredentials.secretKey())\n            .deadLetterQueue(SqsQueueDeadLetterQueueArgs.builder()\n                .id(deadLetter.id())\n                .maxReceiveCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mnq:Sqs\n  mainSqsCredentials:\n    type: scaleway:mnq:SqsCredentials\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: sqs-credentials\n      permissions:\n        canManage: true\n        canReceive: false\n        canPublish: false\n  deadLetter:\n    type: scaleway:mnq:SqsQueue\n    name: dead_letter\n    properties:\n      projectId: ${main.projectId}\n      name: dead-letter-queue\n      sqsEndpoint: ${main.endpoint}\n      accessKey: ${mainSqsCredentials.accessKey}\n      secretKey: ${mainSqsCredentials.secretKey}\n  mainSqsQueue:\n    type: scaleway:mnq:SqsQueue\n    name: main\n    properties:\n      projectId: ${main.projectId}\n      name: my-queue\n      sqsEndpoint: ${main.endpoint}\n      accessKey: ${mainSqsCredentials.accessKey}\n      secretKey: ${mainSqsCredentials.secretKey}\n      deadLetterQueue:\n        id: ${deadLetter.id}\n        maxReceiveCount: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Dead Letter Queue\n\nThe \u003cspan pulumi-lang-nodejs=\"`deadLetterQueue`\" pulumi-lang-dotnet=\"`DeadLetterQueue`\" pulumi-lang-go=\"`deadLetterQueue`\" pulumi-lang-python=\"`dead_letter_queue`\" pulumi-lang-yaml=\"`deadLetterQueue`\" pulumi-lang-java=\"`deadLetterQueue`\"\u003e`deadLetterQueue`\u003c/span\u003e block supports the following:\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 - (Required) The ID of the dead letter queue. Can be either in the format `{region}/{project-id}/{queue-name}` or `arn:scw:sqs:{region}:project-{project-id}:{queue-name}`.\n\n- \u003cspan pulumi-lang-nodejs=\"`maxReceiveCount`\" pulumi-lang-dotnet=\"`MaxReceiveCount`\" pulumi-lang-go=\"`maxReceiveCount`\" pulumi-lang-python=\"`max_receive_count`\" pulumi-lang-yaml=\"`maxReceiveCount`\" pulumi-lang-java=\"`maxReceiveCount`\"\u003e`maxReceiveCount`\u003c/span\u003e - (Required) The number of times a message is delivered to the source queue before being moved to the dead letter queue. Must be between 1 and 1000.\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SQS queue.\n",
                    "secret": true
                },
                "arn": {
                    "type": "string",
                    "description": "The ARN of the queue"
                },
                "contentBasedDeduplication": {
                    "type": "boolean",
                    "description": "Specifies whether to enable content-based deduplication. 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"
                },
                "deadLetterQueue": {
                    "$ref": "#/types/scaleway:index/MnqSqsQueueDeadLetterQueue:MnqSqsQueueDeadLetterQueue",
                    "description": "Configuration for the dead letter queue. See Dead Letter Queue below for details.\n"
                },
                "fifoQueue": {
                    "type": "boolean",
                    "description": "Whether the queue is a FIFO queue. If true, the queue name must end with .fifo. 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"
                },
                "messageMaxAge": {
                    "type": "integer",
                    "description": "The number of seconds the queue retains a message. Must be between 60 and 1_209_600. Defaults to 345_600.\n"
                },
                "messageMaxSize": {
                    "type": "integer",
                    "description": "The maximum size of a message. Should be in bytes. Must be between 1024 and 262_144. Defaults to 262_144.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SQS queue. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n"
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n"
                },
                "receiveWaitTimeSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait for a message to arrive in the queue before returning. Must be between 0 and 20. Defaults to 0.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SQS is enabled.\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SQS queue.\n",
                    "secret": true
                },
                "sqsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SQS queue. Can contain a {region} placeholder. Defaults to `https://sqs.mnq.{region}.scaleway.com`.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the queue.\n"
                },
                "visibilityTimeoutSeconds": {
                    "type": "integer",
                    "description": "The number of seconds a message is hidden from other consumers. Must be between 0 and 43_200. Defaults to 30.\n"
                }
            },
            "required": [
                "accessKey",
                "arn",
                "contentBasedDeduplication",
                "fifoQueue",
                "name",
                "namePrefix",
                "projectId",
                "secretKey",
                "url"
            ],
            "inputProperties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key of the SQS queue.\n",
                    "secret": true
                },
                "contentBasedDeduplication": {
                    "type": "boolean",
                    "description": "Specifies whether to enable content-based deduplication. 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"
                },
                "deadLetterQueue": {
                    "$ref": "#/types/scaleway:index/MnqSqsQueueDeadLetterQueue:MnqSqsQueueDeadLetterQueue",
                    "description": "Configuration for the dead letter queue. See Dead Letter Queue below for details.\n"
                },
                "fifoQueue": {
                    "type": "boolean",
                    "description": "Whether the queue is a FIFO queue. If true, the queue name must end with .fifo. 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"
                },
                "messageMaxAge": {
                    "type": "integer",
                    "description": "The number of seconds the queue retains a message. Must be between 60 and 1_209_600. Defaults to 345_600.\n"
                },
                "messageMaxSize": {
                    "type": "integer",
                    "description": "The maximum size of a message. Should be in bytes. Must be between 1024 and 262_144. Defaults to 262_144.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the SQS queue. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "receiveWaitTimeSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait for a message to arrive in the queue before returning. Must be between 0 and 20. Defaults to 0.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which SQS is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "secretKey": {
                    "type": "string",
                    "description": "The secret key of the SQS queue.\n",
                    "secret": true
                },
                "sqsEndpoint": {
                    "type": "string",
                    "description": "The endpoint of the SQS queue. Can contain a {region} placeholder. Defaults to `https://sqs.mnq.{region}.scaleway.com`.\n"
                },
                "visibilityTimeoutSeconds": {
                    "type": "integer",
                    "description": "The number of seconds a message is hidden from other consumers. Must be between 0 and 43_200. Defaults to 30.\n"
                }
            },
            "requiredInputs": [
                "accessKey",
                "secretKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MnqSqsQueue resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key of the SQS queue.\n",
                        "secret": true
                    },
                    "arn": {
                        "type": "string",
                        "description": "The ARN of the queue"
                    },
                    "contentBasedDeduplication": {
                        "type": "boolean",
                        "description": "Specifies whether to enable content-based deduplication. 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"
                    },
                    "deadLetterQueue": {
                        "$ref": "#/types/scaleway:index/MnqSqsQueueDeadLetterQueue:MnqSqsQueueDeadLetterQueue",
                        "description": "Configuration for the dead letter queue. See Dead Letter Queue below for details.\n"
                    },
                    "fifoQueue": {
                        "type": "boolean",
                        "description": "Whether the queue is a FIFO queue. If true, the queue name must end with .fifo. 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"
                    },
                    "messageMaxAge": {
                        "type": "integer",
                        "description": "The number of seconds the queue retains a message. Must be between 60 and 1_209_600. Defaults to 345_600.\n"
                    },
                    "messageMaxSize": {
                        "type": "integer",
                        "description": "The maximum size of a message. Should be in bytes. Must be between 1024 and 262_144. Defaults to 262_144.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the SQS queue. 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=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e is required. Conflicts with \u003cspan pulumi-lang-nodejs=\"`namePrefix`\" pulumi-lang-dotnet=\"`NamePrefix`\" pulumi-lang-go=\"`namePrefix`\" pulumi-lang-python=\"`name_prefix`\" pulumi-lang-yaml=\"`namePrefix`\" pulumi-lang-java=\"`namePrefix`\"\u003e`namePrefix`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "namePrefix": {
                        "type": "string",
                        "description": "Creates a unique name beginning with the specified prefix. Conflicts with \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.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project in which SQS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "receiveWaitTimeSeconds": {
                        "type": "integer",
                        "description": "The number of seconds to wait for a message to arrive in the queue before returning. Must be between 0 and 20. Defaults to 0.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which SQS is enabled.\n",
                        "willReplaceOnChanges": true
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The secret key of the SQS queue.\n",
                        "secret": true
                    },
                    "sqsEndpoint": {
                        "type": "string",
                        "description": "The endpoint of the SQS queue. Can contain a {region} placeholder. Defaults to `https://sqs.mnq.{region}.scaleway.com`.\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL of the queue.\n"
                    },
                    "visibilityTimeoutSeconds": {
                        "type": "integer",
                        "description": "The number of seconds a message is hidden from other consumers. Must be between 0 and 43_200. Defaults to 30.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mnqsqsqueue.MnqSqsQueue has been deprecated in favor of scaleway.mnq/sqsqueue.SqsQueue"
        },
        "scaleway:index/mongoDbInstance:MongoDbInstance": {
            "description": "Creates and manages Scaleway MongoDB® instance.\nFor more information, see the [product documentation](https://www.scaleway.com/en/docs/managed-mongodb-databases/).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic MongoDB instance creation\nconst main = new scaleway.mongodb.Instance(\"main\", {\n    name: \"test-mongodb-basic1\",\n    version: \"7.0.12\",\n    nodeType: \"MGDB-PLAY2-NANO\",\n    nodeNumber: 1,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    volumeSizeInGb: 5,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Basic MongoDB instance creation\nmain = scaleway.mongodb.Instance(\"main\",\n    name=\"test-mongodb-basic1\",\n    version=\"7.0.12\",\n    node_type=\"MGDB-PLAY2-NANO\",\n    node_number=1,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    volume_size_in_gb=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic MongoDB instance creation\n    var main = new Scaleway.Mongodb.Instance(\"main\", new()\n    {\n        Name = \"test-mongodb-basic1\",\n        Version = \"7.0.12\",\n        NodeType = \"MGDB-PLAY2-NANO\",\n        NodeNumber = 1,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        VolumeSizeInGb = 5,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mongodb\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic MongoDB instance creation\n\t\t_, err := mongodb.NewInstance(ctx, \"main\", \u0026mongodb.InstanceArgs{\n\t\t\tName:           pulumi.String(\"test-mongodb-basic1\"),\n\t\t\tVersion:        pulumi.String(\"7.0.12\"),\n\t\t\tNodeType:       pulumi.String(\"MGDB-PLAY2-NANO\"),\n\t\t\tNodeNumber:     pulumi.Int(1),\n\t\t\tUserName:       pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:       pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tVolumeSizeInGb: pulumi.Int(5),\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.scaleway.mongodb.Instance;\nimport com.pulumi.scaleway.mongodb.InstanceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 MongoDB instance creation\n        var main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-mongodb-basic1\")\n            .version(\"7.0.12\")\n            .nodeType(\"MGDB-PLAY2-NANO\")\n            .nodeNumber(1)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .volumeSizeInGb(5)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic MongoDB instance creation\n  main:\n    type: scaleway:mongodb:Instance\n    properties:\n      name: test-mongodb-basic1\n      version: 7.0.12\n      nodeType: MGDB-PLAY2-NANO\n      nodeNumber: 1\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      volumeSizeInGb: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMongoDB® instance can be imported using the \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 scaleway:index/mongoDbInstance:MongoDbInstance main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the MongoDB® instance.\n"
                },
                "isSnapshotScheduleEnabled": {
                    "type": "boolean",
                    "description": "Whether automatic snapshot scheduling is enabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the MongoDB® instance.\n"
                },
                "nodeNumber": {
                    "type": "integer",
                    "description": "Number of nodes in the instance"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of MongoDB® instance to create.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password of the user. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword of the user in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/MongoDbInstancePrivateIp:MongoDbInstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the instance.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/MongoDbInstancePrivateNetwork:MongoDbInstancePrivateNetwork",
                    "description": "Private Network endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the MongoDB® instance is associated with.\n"
                },
                "publicNetwork": {
                    "$ref": "#/types/scaleway:index/MongoDbInstancePublicNetwork:MongoDbInstancePublicNetwork",
                    "description": "Public network endpoint configuration (no arguments).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the MongoDB® instance should be created.\n"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of settings to define for the instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "Snapshot ID to restore the MongoDB® instance from.\n"
                },
                "snapshotScheduleFrequencyHours": {
                    "type": "integer",
                    "description": "Snapshot schedule frequency in hours.\n"
                },
                "snapshotScheduleRetentionDays": {
                    "type": "integer",
                    "description": "Snapshot schedule retention in days.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags attached to the MongoDB® instance.\n"
                },
                "tlsCertificate": {
                    "type": "string",
                    "description": "The PEM-encoded TLS certificate for the MongoDB® instance, if available.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the MongoDB® instance.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user created when the instance is created.\n"
                },
                "version": {
                    "type": "string",
                    "description": "MongoDB® version of the instance.\n"
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size in GB.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of the instance.\n"
                }
            },
            "required": [
                "createdAt",
                "isSnapshotScheduleEnabled",
                "name",
                "nodeNumber",
                "nodeType",
                "privateIps",
                "projectId",
                "publicNetwork",
                "snapshotScheduleFrequencyHours",
                "snapshotScheduleRetentionDays",
                "tlsCertificate",
                "updatedAt",
                "version",
                "volumeSizeInGb"
            ],
            "inputProperties": {
                "isSnapshotScheduleEnabled": {
                    "type": "boolean",
                    "description": "Whether automatic snapshot scheduling is enabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the MongoDB® instance.\n"
                },
                "nodeNumber": {
                    "type": "integer",
                    "description": "Number of nodes in the instance"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of MongoDB® instance to create.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password of the user. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword of the user in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/MongoDbInstancePrivateIp:MongoDbInstancePrivateIp"
                    },
                    "description": "The private IPv4 address associated with the instance.\n"
                },
                "privateNetwork": {
                    "$ref": "#/types/scaleway:index/MongoDbInstancePrivateNetwork:MongoDbInstancePrivateNetwork",
                    "description": "Private Network endpoints of the Database Instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the MongoDB® instance is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicNetwork": {
                    "$ref": "#/types/scaleway:index/MongoDbInstancePublicNetwork:MongoDbInstancePublicNetwork",
                    "description": "Public network endpoint configuration (no arguments).\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the MongoDB® instance should be created.\n",
                    "willReplaceOnChanges": true
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of settings to define for the instance."
                },
                "snapshotId": {
                    "type": "string",
                    "description": "Snapshot ID to restore the MongoDB® instance from.\n",
                    "willReplaceOnChanges": true
                },
                "snapshotScheduleFrequencyHours": {
                    "type": "integer",
                    "description": "Snapshot schedule frequency in hours.\n"
                },
                "snapshotScheduleRetentionDays": {
                    "type": "integer",
                    "description": "Snapshot schedule retention in days.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags attached to the MongoDB® instance.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Name of the user created when the instance is created.\n"
                },
                "version": {
                    "type": "string",
                    "description": "MongoDB® version of the instance.\n"
                },
                "volumeSizeInGb": {
                    "type": "integer",
                    "description": "Volume size in GB.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Volume type of the instance.\n"
                }
            },
            "requiredInputs": [
                "nodeNumber",
                "nodeType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MongoDbInstance resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the MongoDB® instance.\n"
                    },
                    "isSnapshotScheduleEnabled": {
                        "type": "boolean",
                        "description": "Whether automatic snapshot scheduling is enabled.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the MongoDB® instance.\n"
                    },
                    "nodeNumber": {
                        "type": "integer",
                        "description": "Number of nodes in the instance"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of MongoDB® instance to create.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password of the user. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword of the user in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/MongoDbInstancePrivateIp:MongoDbInstancePrivateIp"
                        },
                        "description": "The private IPv4 address associated with the instance.\n"
                    },
                    "privateNetwork": {
                        "$ref": "#/types/scaleway:index/MongoDbInstancePrivateNetwork:MongoDbInstancePrivateNetwork",
                        "description": "Private Network endpoints of the Database Instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the MongoDB® instance is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicNetwork": {
                        "$ref": "#/types/scaleway:index/MongoDbInstancePublicNetwork:MongoDbInstancePublicNetwork",
                        "description": "Public network endpoint configuration (no arguments).\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the MongoDB® instance should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "settings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of settings to define for the instance."
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "Snapshot ID to restore the MongoDB® instance from.\n",
                        "willReplaceOnChanges": true
                    },
                    "snapshotScheduleFrequencyHours": {
                        "type": "integer",
                        "description": "Snapshot schedule frequency in hours.\n"
                    },
                    "snapshotScheduleRetentionDays": {
                        "type": "integer",
                        "description": "Snapshot schedule retention in days.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of tags attached to the MongoDB® instance.\n"
                    },
                    "tlsCertificate": {
                        "type": "string",
                        "description": "The PEM-encoded TLS certificate for the MongoDB® instance, if available.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the MongoDB® instance.\n"
                    },
                    "userName": {
                        "type": "string",
                        "description": "Name of the user created when the instance is created.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "MongoDB® version of the instance.\n"
                    },
                    "volumeSizeInGb": {
                        "type": "integer",
                        "description": "Volume size in GB.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "Volume type of the instance.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mongodbinstance.MongoDbInstance has been deprecated in favor of scaleway.mongodb/instance.Instance"
        },
        "scaleway:index/mongoDbSnapshot:MongoDbSnapshot": {
            "description": "Creates and manages Scaleway MongoDB® snapshots.\nFor more information refer to the [product documentation](https://www.scaleway.com/en/docs/managed-mongodb-databases/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.mongodb.Snapshot(\"main\", {\n    instanceId: mainScalewayMongodbInstance.id,\n    name: \"name-snapshot\",\n    expiresAt: \"2024-12-31T23:59:59Z\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.mongodb.Snapshot(\"main\",\n    instance_id=main_scaleway_mongodb_instance[\"id\"],\n    name=\"name-snapshot\",\n    expires_at=\"2024-12-31T23:59:59Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Mongodb.Snapshot(\"main\", new()\n    {\n        InstanceId = mainScalewayMongodbInstance.Id,\n        Name = \"name-snapshot\",\n        ExpiresAt = \"2024-12-31T23:59:59Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mongodb\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := mongodb.NewSnapshot(ctx, \"main\", \u0026mongodb.SnapshotArgs{\n\t\t\tInstanceId: pulumi.Any(mainScalewayMongodbInstance.Id),\n\t\t\tName:       pulumi.String(\"name-snapshot\"),\n\t\t\tExpiresAt:  pulumi.String(\"2024-12-31T23:59:59Z\"),\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.scaleway.mongodb.Snapshot;\nimport com.pulumi.scaleway.mongodb.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Snapshot(\"main\", SnapshotArgs.builder()\n            .instanceId(mainScalewayMongodbInstance.id())\n            .name(\"name-snapshot\")\n            .expiresAt(\"2024-12-31T23:59:59Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:mongodb:Snapshot\n    properties:\n      instanceId: ${mainScalewayMongodbInstance.id}\n      name: name-snapshot\n      expiresAt: 2024-12-31T23:59:59Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMongoDB® snapshots can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/mongoDbSnapshot:MongoDbSnapshot main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the MongoDB® snapshot was created.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the MongoDB® snapshot in ISO 8601 format (e.g. `2024-12-31T23:59:59Z`).\n\n\u003e **Important:** Once set, \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The ID of the MongoDB® instance from which the snapshot was created.\n"
                },
                "instanceName": {
                    "type": "string",
                    "description": "The name of the MongoDB® instance from which the snapshot was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the MongoDB® snapshot.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of node associated with the MongoDB® snapshot.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the MongoDB® snapshot should be created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the MongoDB® snapshot in bytes.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the MongoDB® snapshot.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume used for the MongoDB® snapshot.\n"
                }
            },
            "required": [
                "createdAt",
                "expiresAt",
                "instanceId",
                "instanceName",
                "name",
                "nodeType",
                "size",
                "updatedAt",
                "volumeType"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "string",
                    "description": "The expiration date of the MongoDB® snapshot in ISO 8601 format (e.g. `2024-12-31T23:59:59Z`).\n\n\u003e **Important:** Once set, \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The ID of the MongoDB® instance from which the snapshot was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the MongoDB® snapshot.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the MongoDB® snapshot should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "expiresAt",
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MongoDbSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the MongoDB® snapshot was created.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "The expiration date of the MongoDB® snapshot in ISO 8601 format (e.g. `2024-12-31T23:59:59Z`).\n\n\u003e **Important:** Once set, \u003cspan pulumi-lang-nodejs=\"`expiresAt`\" pulumi-lang-dotnet=\"`ExpiresAt`\" pulumi-lang-go=\"`expiresAt`\" pulumi-lang-python=\"`expires_at`\" pulumi-lang-yaml=\"`expiresAt`\" pulumi-lang-java=\"`expiresAt`\"\u003e`expiresAt`\u003c/span\u003e cannot be removed.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "The ID of the MongoDB® instance from which the snapshot was created.\n"
                    },
                    "instanceName": {
                        "type": "string",
                        "description": "The name of the MongoDB® instance from which the snapshot was created.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the MongoDB® snapshot.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of node associated with the MongoDB® snapshot.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the MongoDB® snapshot should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the MongoDB® snapshot in bytes.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the MongoDB® snapshot.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "The type of volume used for the MongoDB® snapshot.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/mongodbsnapshot.MongoDbSnapshot has been deprecated in favor of scaleway.mongodb/snapshot.Snapshot"
        },
        "scaleway:index/objectBucket:ObjectBucket": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.Bucket`\" pulumi-lang-dotnet=\"`scaleway.object.Bucket`\" pulumi-lang-go=\"`object.Bucket`\" pulumi-lang-python=\"`object.Bucket`\" pulumi-lang-yaml=\"`scaleway.object.Bucket`\" pulumi-lang-java=\"`scaleway.object.Bucket`\"\u003e`scaleway.object.Bucket`\u003c/span\u003e resource allows you to create and manage buckets for [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/how-to/create-a-bucket/) for more information on Object Storage buckets.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst someBucket = new scaleway.object.Bucket(\"some_bucket\", {\n    name: \"some-unique-name\",\n    tags: {\n        key: \"value\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsome_bucket = scaleway.object.Bucket(\"some_bucket\",\n    name=\"some-unique-name\",\n    tags={\n        \"key\": \"value\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var someBucket = new Scaleway.Object.Bucket(\"some_bucket\", new()\n    {\n        Name = \"some-unique-name\",\n        Tags = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"some_bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 someBucket = new Bucket(\"someBucket\", BucketArgs.builder()\n            .name(\"some-unique-name\")\n            .tags(Map.of(\"key\", \"value\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  someBucket:\n    type: scaleway:object:Bucket\n    name: some_bucket\n    properties:\n      name: some-unique-name\n      tags:\n        key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Creating the bucket in a specific project\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst someBucket = new scaleway.object.Bucket(\"some_bucket\", {\n    name: \"some-unique-name\",\n    projectId: \"11111111-1111-1111-1111-111111111111\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsome_bucket = scaleway.object.Bucket(\"some_bucket\",\n    name=\"some-unique-name\",\n    project_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var someBucket = new Scaleway.Object.Bucket(\"some_bucket\", new()\n    {\n        Name = \"some-unique-name\",\n        ProjectId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"some_bucket\", \u0026object.BucketArgs{\n\t\t\tName:      pulumi.String(\"some-unique-name\"),\n\t\t\tProjectId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 someBucket = new Bucket(\"someBucket\", BucketArgs.builder()\n            .name(\"some-unique-name\")\n            .projectId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  someBucket:\n    type: scaleway:object:Bucket\n    name: some_bucket\n    properties:\n      name: some-unique-name\n      projectId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using object lifecycle\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {\n    name: \"mybuckectid\",\n    region: \"fr-par\",\n    lifecycleRules: [\n        {\n            id: \"id1\",\n            prefix: \"path1/\",\n            enabled: true,\n            expiration: {\n                days: 365,\n            },\n            transitions: [{\n                days: 120,\n                storageClass: \"GLACIER\",\n            }],\n        },\n        {\n            id: \"id2\",\n            prefix: \"path2/\",\n            enabled: true,\n            expiration: {\n                days: 50,\n            },\n        },\n        {\n            id: \"id3\",\n            prefix: \"path3/\",\n            enabled: false,\n            tags: {\n                tagKey: \"tagValue\",\n                terraform: \"hashicorp\",\n            },\n            expiration: {\n                days: 1,\n            },\n        },\n        {\n            id: \"id4\",\n            enabled: true,\n            tags: {\n                tag1: \"value1\",\n            },\n            transitions: [{\n                days: 1,\n                storageClass: \"GLACIER\",\n            }],\n        },\n        {\n            enabled: true,\n            abortIncompleteMultipartUploadDays: 30,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\",\n    name=\"mybuckectid\",\n    region=\"fr-par\",\n    lifecycle_rules=[\n        {\n            \"id\": \"id1\",\n            \"prefix\": \"path1/\",\n            \"enabled\": True,\n            \"expiration\": {\n                \"days\": 365,\n            },\n            \"transitions\": [{\n                \"days\": 120,\n                \"storage_class\": \"GLACIER\",\n            }],\n        },\n        {\n            \"id\": \"id2\",\n            \"prefix\": \"path2/\",\n            \"enabled\": True,\n            \"expiration\": {\n                \"days\": 50,\n            },\n        },\n        {\n            \"id\": \"id3\",\n            \"prefix\": \"path3/\",\n            \"enabled\": False,\n            \"tags\": {\n                \"tagKey\": \"tagValue\",\n                \"terraform\": \"hashicorp\",\n            },\n            \"expiration\": {\n                \"days\": 1,\n            },\n        },\n        {\n            \"id\": \"id4\",\n            \"enabled\": True,\n            \"tags\": {\n                \"tag1\": \"value1\",\n            },\n            \"transitions\": [{\n                \"days\": 1,\n                \"storage_class\": \"GLACIER\",\n            }],\n        },\n        {\n            \"enabled\": True,\n            \"abort_incomplete_multipart_upload_days\": 30,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"mybuckectid\",\n        Region = \"fr-par\",\n        LifecycleRules = new[]\n        {\n            new Scaleway.Object.Inputs.BucketLifecycleRuleArgs\n            {\n                Id = \"id1\",\n                Prefix = \"path1/\",\n                Enabled = true,\n                Expiration = new Scaleway.Object.Inputs.BucketLifecycleRuleExpirationArgs\n                {\n                    Days = 365,\n                },\n                Transitions = new[]\n                {\n                    new Scaleway.Object.Inputs.BucketLifecycleRuleTransitionArgs\n                    {\n                        Days = 120,\n                        StorageClass = \"GLACIER\",\n                    },\n                },\n            },\n            new Scaleway.Object.Inputs.BucketLifecycleRuleArgs\n            {\n                Id = \"id2\",\n                Prefix = \"path2/\",\n                Enabled = true,\n                Expiration = new Scaleway.Object.Inputs.BucketLifecycleRuleExpirationArgs\n                {\n                    Days = 50,\n                },\n            },\n            new Scaleway.Object.Inputs.BucketLifecycleRuleArgs\n            {\n                Id = \"id3\",\n                Prefix = \"path3/\",\n                Enabled = false,\n                Tags = \n                {\n                    { \"tagKey\", \"tagValue\" },\n                    { \"terraform\", \"hashicorp\" },\n                },\n                Expiration = new Scaleway.Object.Inputs.BucketLifecycleRuleExpirationArgs\n                {\n                    Days = 1,\n                },\n            },\n            new Scaleway.Object.Inputs.BucketLifecycleRuleArgs\n            {\n                Id = \"id4\",\n                Enabled = true,\n                Tags = \n                {\n                    { \"tag1\", \"value1\" },\n                },\n                Transitions = new[]\n                {\n                    new Scaleway.Object.Inputs.BucketLifecycleRuleTransitionArgs\n                    {\n                        Days = 1,\n                        StorageClass = \"GLACIER\",\n                    },\n                },\n            },\n            new Scaleway.Object.Inputs.BucketLifecycleRuleArgs\n            {\n                Enabled = true,\n                AbortIncompleteMultipartUploadDays = 30,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName:   pulumi.String(\"mybuckectid\"),\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t\tLifecycleRules: object.BucketLifecycleRuleArray{\n\t\t\t\t\u0026object.BucketLifecycleRuleArgs{\n\t\t\t\t\tId:      pulumi.String(\"id1\"),\n\t\t\t\t\tPrefix:  pulumi.String(\"path1/\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpiration: \u0026object.BucketLifecycleRuleExpirationArgs{\n\t\t\t\t\t\tDays: pulumi.Int(365),\n\t\t\t\t\t},\n\t\t\t\t\tTransitions: object.BucketLifecycleRuleTransitionArray{\n\t\t\t\t\t\t\u0026object.BucketLifecycleRuleTransitionArgs{\n\t\t\t\t\t\t\tDays:         pulumi.Int(120),\n\t\t\t\t\t\t\tStorageClass: pulumi.String(\"GLACIER\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026object.BucketLifecycleRuleArgs{\n\t\t\t\t\tId:      pulumi.String(\"id2\"),\n\t\t\t\t\tPrefix:  pulumi.String(\"path2/\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpiration: \u0026object.BucketLifecycleRuleExpirationArgs{\n\t\t\t\t\t\tDays: pulumi.Int(50),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026object.BucketLifecycleRuleArgs{\n\t\t\t\t\tId:      pulumi.String(\"id3\"),\n\t\t\t\t\tPrefix:  pulumi.String(\"path3/\"),\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\t\"tagKey\":    pulumi.String(\"tagValue\"),\n\t\t\t\t\t\t\"terraform\": pulumi.String(\"hashicorp\"),\n\t\t\t\t\t},\n\t\t\t\t\tExpiration: \u0026object.BucketLifecycleRuleExpirationArgs{\n\t\t\t\t\t\tDays: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026object.BucketLifecycleRuleArgs{\n\t\t\t\t\tId:      pulumi.String(\"id4\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\t\"tag1\": pulumi.String(\"value1\"),\n\t\t\t\t\t},\n\t\t\t\t\tTransitions: object.BucketLifecycleRuleTransitionArray{\n\t\t\t\t\t\t\u0026object.BucketLifecycleRuleTransitionArgs{\n\t\t\t\t\t\t\tDays:         pulumi.Int(1),\n\t\t\t\t\t\t\tStorageClass: pulumi.String(\"GLACIER\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026object.BucketLifecycleRuleArgs{\n\t\t\t\t\tEnabled:                            pulumi.Bool(true),\n\t\t\t\t\tAbortIncompleteMultipartUploadDays: pulumi.Int(30),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.inputs.BucketLifecycleRuleArgs;\nimport com.pulumi.scaleway.object.inputs.BucketLifecycleRuleExpirationArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"mybuckectid\")\n            .region(\"fr-par\")\n            .lifecycleRules(            \n                BucketLifecycleRuleArgs.builder()\n                    .id(\"id1\")\n                    .prefix(\"path1/\")\n                    .enabled(true)\n                    .expiration(BucketLifecycleRuleExpirationArgs.builder()\n                        .days(365)\n                        .build())\n                    .transitions(BucketLifecycleRuleTransitionArgs.builder()\n                        .days(120)\n                        .storageClass(\"GLACIER\")\n                        .build())\n                    .build(),\n                BucketLifecycleRuleArgs.builder()\n                    .id(\"id2\")\n                    .prefix(\"path2/\")\n                    .enabled(true)\n                    .expiration(BucketLifecycleRuleExpirationArgs.builder()\n                        .days(50)\n                        .build())\n                    .build(),\n                BucketLifecycleRuleArgs.builder()\n                    .id(\"id3\")\n                    .prefix(\"path3/\")\n                    .enabled(false)\n                    .tags(Map.ofEntries(\n                        Map.entry(\"tagKey\", \"tagValue\"),\n                        Map.entry(\"terraform\", \"hashicorp\")\n                    ))\n                    .expiration(BucketLifecycleRuleExpirationArgs.builder()\n                        .days(1)\n                        .build())\n                    .build(),\n                BucketLifecycleRuleArgs.builder()\n                    .id(\"id4\")\n                    .enabled(true)\n                    .tags(Map.of(\"tag1\", \"value1\"))\n                    .transitions(BucketLifecycleRuleTransitionArgs.builder()\n                        .days(1)\n                        .storageClass(\"GLACIER\")\n                        .build())\n                    .build(),\n                BucketLifecycleRuleArgs.builder()\n                    .enabled(true)\n                    .abortIncompleteMultipartUploadDays(30)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: mybuckectid\n      region: fr-par\n      lifecycleRules:\n        - id: id1\n          prefix: path1/\n          enabled: true\n          expiration:\n            days: 365\n          transitions:\n            - days: 120\n              storageClass: GLACIER\n        - id: id2\n          prefix: path2/\n          enabled: true\n          expiration:\n            days: '50'\n        - id: id3\n          prefix: path3/\n          enabled: false\n          tags:\n            tagKey: tagValue\n            terraform: hashicorp\n          expiration:\n            days: '1'\n        - id: id4\n          enabled: true\n          tags:\n            tag1: value1\n          transitions:\n            - days: 1\n              storageClass: GLACIER\n        - enabled: true\n          abortIncompleteMultipartUploadDays: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBuckets can be imported using the `{region}/{bucketName}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectBucket:ObjectBucket some_bucket fr-par/some-bucket\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectBucket:ObjectBucket some_bucket fr-par/some-bucket@11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acl": {
                    "type": "string",
                    "description": "(Deprecated) The canned ACL you want to apply to the bucket.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e attribute is deprecated. See\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003eresource documentation. Refer to the [official canned ACL documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) for more information on the different roles.\n",
                    "deprecationMessage": "ACL attribute is deprecated. Please use the resource\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003einstead."
                },
                "apiEndpoint": {
                    "type": "string",
                    "description": "API URL of the bucket"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketCorsRule:ObjectBucketCorsRule"
                    },
                    "description": "List of CORS rules"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint URL of the bucket.\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Boolean that, when set to true, allows the deletion of all objects (including locked objects) when the bucket is destroyed. This operation is irreversible, and the objects cannot be recovered. The default is false.\n"
                },
                "lifecycleRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketLifecycleRule:ObjectBucketLifecycleRule"
                    },
                    "description": "Lifecycle configuration is a set of rules that define actions that Scaleway Object Storage applies to a group of objects"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the bucket.\n"
                },
                "objectLockEnabled": {
                    "type": "boolean",
                    "description": "Enable object lock"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The [region](https://www.scaleway.com/en/developers/api/#region-definition) in which the bucket will be created.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A list of tags (key/value) for the bucket.\n\n* \u003e **Important:** The Scaleway console does not support `key/value` tags yet, so only the tags' values will be displayed.\nIf you make any change to your bucket's tags using the console, it will overwrite them with the format `value/value`.\n"
                },
                "versioning": {
                    "$ref": "#/types/scaleway:index/ObjectBucketVersioning:ObjectBucketVersioning",
                    "description": "Allow multiple versions of an object in the same bucket"
                }
            },
            "required": [
                "apiEndpoint",
                "corsRules",
                "endpoint",
                "name",
                "projectId",
                "versioning"
            ],
            "inputProperties": {
                "acl": {
                    "type": "string",
                    "description": "(Deprecated) The canned ACL you want to apply to the bucket.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e attribute is deprecated. See\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003eresource documentation. Refer to the [official canned ACL documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) for more information on the different roles.\n",
                    "deprecationMessage": "ACL attribute is deprecated. Please use the resource\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003einstead."
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketCorsRule:ObjectBucketCorsRule"
                    },
                    "description": "List of CORS rules"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Boolean that, when set to true, allows the deletion of all objects (including locked objects) when the bucket is destroyed. This operation is irreversible, and the objects cannot be recovered. The default is false.\n"
                },
                "lifecycleRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/ObjectBucketLifecycleRule:ObjectBucketLifecycleRule"
                    },
                    "description": "Lifecycle configuration is a set of rules that define actions that Scaleway Object Storage applies to a group of objects"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the bucket.\n",
                    "willReplaceOnChanges": true
                },
                "objectLockEnabled": {
                    "type": "boolean",
                    "description": "Enable object lock",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The [region](https://www.scaleway.com/en/developers/api/#region-definition) in which the bucket will be created.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A list of tags (key/value) for the bucket.\n\n* \u003e **Important:** The Scaleway console does not support `key/value` tags yet, so only the tags' values will be displayed.\nIf you make any change to your bucket's tags using the console, it will overwrite them with the format `value/value`.\n"
                },
                "versioning": {
                    "$ref": "#/types/scaleway:index/ObjectBucketVersioning:ObjectBucketVersioning",
                    "description": "Allow multiple versions of an object in the same bucket"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectBucket resources.\n",
                "properties": {
                    "acl": {
                        "type": "string",
                        "description": "(Deprecated) The canned ACL you want to apply to the bucket.\n\n\u003e **Note:** The \u003cspan pulumi-lang-nodejs=\"`acl`\" pulumi-lang-dotnet=\"`Acl`\" pulumi-lang-go=\"`acl`\" pulumi-lang-python=\"`acl`\" pulumi-lang-yaml=\"`acl`\" pulumi-lang-java=\"`acl`\"\u003e`acl`\u003c/span\u003e attribute is deprecated. See\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003eresource documentation. Refer to the [official canned ACL documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) for more information on the different roles.\n",
                        "deprecationMessage": "ACL attribute is deprecated. Please use the resource\u003cspan pulumi-lang-nodejs=\" scaleway.object.BucketAcl \" pulumi-lang-dotnet=\" scaleway.object.BucketAcl \" pulumi-lang-go=\" object.BucketAcl \" pulumi-lang-python=\" object.BucketAcl \" pulumi-lang-yaml=\" scaleway.object.BucketAcl \" pulumi-lang-java=\" scaleway.object.BucketAcl \"\u003e scaleway.object.BucketAcl \u003c/span\u003einstead."
                    },
                    "apiEndpoint": {
                        "type": "string",
                        "description": "API URL of the bucket"
                    },
                    "corsRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/ObjectBucketCorsRule:ObjectBucketCorsRule"
                        },
                        "description": "List of CORS rules"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint URL of the bucket.\n"
                    },
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "Boolean that, when set to true, allows the deletion of all objects (including locked objects) when the bucket is destroyed. This operation is irreversible, and the objects cannot be recovered. The default is false.\n"
                    },
                    "lifecycleRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/ObjectBucketLifecycleRule:ObjectBucketLifecycleRule"
                        },
                        "description": "Lifecycle configuration is a set of rules that define actions that Scaleway Object Storage applies to a group of objects"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the bucket.\n",
                        "willReplaceOnChanges": true
                    },
                    "objectLockEnabled": {
                        "type": "boolean",
                        "description": "Enable object lock",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The [region](https://www.scaleway.com/en/developers/api/#region-definition) in which the bucket will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A list of tags (key/value) for the bucket.\n\n* \u003e **Important:** The Scaleway console does not support `key/value` tags yet, so only the tags' values will be displayed.\nIf you make any change to your bucket's tags using the console, it will overwrite them with the format `value/value`.\n"
                    },
                    "versioning": {
                        "$ref": "#/types/scaleway:index/ObjectBucketVersioning:ObjectBucketVersioning",
                        "description": "Allow multiple versions of an object in the same bucket"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectbucket.ObjectBucket has been deprecated in favor of scaleway.object/bucket.Bucket"
        },
        "scaleway:index/objectBucketAcl:ObjectBucketAcl": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.BucketAcl`\" pulumi-lang-dotnet=\"`scaleway.object.BucketAcl`\" pulumi-lang-go=\"`object.BucketAcl`\" pulumi-lang-python=\"`object.BucketAcl`\" pulumi-lang-yaml=\"`scaleway.object.BucketAcl`\" pulumi-lang-java=\"`scaleway.object.BucketAcl`\"\u003e`scaleway.object.BucketAcl`\u003c/span\u003e resource allows you to create and manage Access Control Lists (ACLs) for [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/bucket-operations/#putbucketacl) for more information on ACLs.\n\n\u003e **Note:** `terraform destroy` does not delete the ACL but does remove the resource from the Terraform state.\n\n\u003e **Note:** [Account identifiers](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) are not supported by Scaleway.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst someBucket = new scaleway.object.Bucket(\"some_bucket\", {name: \"unique-name\"});\nconst main = new scaleway.object.BucketAcl(\"main\", {\n    bucket: mainScalewayObjectBucket.id,\n    acl: \"private\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsome_bucket = scaleway.object.Bucket(\"some_bucket\", name=\"unique-name\")\nmain = scaleway.object.BucketAcl(\"main\",\n    bucket=main_scaleway_object_bucket[\"id\"],\n    acl=\"private\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var someBucket = new Scaleway.Object.Bucket(\"some_bucket\", new()\n    {\n        Name = \"unique-name\",\n    });\n\n    var main = new Scaleway.Object.BucketAcl(\"main\", new()\n    {\n        Bucket = mainScalewayObjectBucket.Id,\n        Acl = \"private\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := object.NewBucket(ctx, \"some_bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketAcl(ctx, \"main\", \u0026object.BucketAclArgs{\n\t\t\tBucket: pulumi.Any(mainScalewayObjectBucket.Id),\n\t\t\tAcl:    pulumi.String(\"private\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketAcl;\nimport com.pulumi.scaleway.object.BucketAclArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 someBucket = new Bucket(\"someBucket\", BucketArgs.builder()\n            .name(\"unique-name\")\n            .build());\n\n        var main = new BucketAcl(\"main\", BucketAclArgs.builder()\n            .bucket(mainScalewayObjectBucket.id())\n            .acl(\"private\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  someBucket:\n    type: scaleway:object:Bucket\n    name: some_bucket\n    properties:\n      name: unique-name\n  main:\n    type: scaleway:object:BucketAcl\n    properties:\n      bucket: ${mainScalewayObjectBucket.id}\n      acl: private\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor more information, refer to the [PutBucketAcl API call documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/bucket-operations/#putbucketacl).\n\n\n### With Grants\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {name: \"your-bucket\"});\nconst mainBucketAcl = new scaleway.object.BucketAcl(\"main\", {\n    bucket: main.id,\n    accessControlPolicy: {\n        grants: [\n            {\n                grantee: {\n                    id: \"\u003cproject-id\u003e:\u003cproject-id\u003e\",\n                    type: \"CanonicalUser\",\n                },\n                permission: \"FULL_CONTROL\",\n            },\n            {\n                grantee: {\n                    id: \"\u003cproject-id\u003e\",\n                    type: \"CanonicalUser\",\n                },\n                permission: \"WRITE\",\n            },\n        ],\n        owner: {\n            id: \"\u003cproject-id\u003e\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\", name=\"your-bucket\")\nmain_bucket_acl = scaleway.object.BucketAcl(\"main\",\n    bucket=main.id,\n    access_control_policy={\n        \"grants\": [\n            {\n                \"grantee\": {\n                    \"id\": \"\u003cproject-id\u003e:\u003cproject-id\u003e\",\n                    \"type\": \"CanonicalUser\",\n                },\n                \"permission\": \"FULL_CONTROL\",\n            },\n            {\n                \"grantee\": {\n                    \"id\": \"\u003cproject-id\u003e\",\n                    \"type\": \"CanonicalUser\",\n                },\n                \"permission\": \"WRITE\",\n            },\n        ],\n        \"owner\": {\n            \"id\": \"\u003cproject-id\u003e\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"your-bucket\",\n    });\n\n    var mainBucketAcl = new Scaleway.Object.BucketAcl(\"main\", new()\n    {\n        Bucket = main.Id,\n        AccessControlPolicy = new Scaleway.Object.Inputs.BucketAclAccessControlPolicyArgs\n        {\n            Grants = new[]\n            {\n                new Scaleway.Object.Inputs.BucketAclAccessControlPolicyGrantArgs\n                {\n                    Grantee = new Scaleway.Object.Inputs.BucketAclAccessControlPolicyGrantGranteeArgs\n                    {\n                        Id = \"\u003cproject-id\u003e:\u003cproject-id\u003e\",\n                        Type = \"CanonicalUser\",\n                    },\n                    Permission = \"FULL_CONTROL\",\n                },\n                new Scaleway.Object.Inputs.BucketAclAccessControlPolicyGrantArgs\n                {\n                    Grantee = new Scaleway.Object.Inputs.BucketAclAccessControlPolicyGrantGranteeArgs\n                    {\n                        Id = \"\u003cproject-id\u003e\",\n                        Type = \"CanonicalUser\",\n                    },\n                    Permission = \"WRITE\",\n                },\n            },\n            Owner = new Scaleway.Object.Inputs.BucketAclAccessControlPolicyOwnerArgs\n            {\n                Id = \"\u003cproject-id\u003e\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"your-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketAcl(ctx, \"main\", \u0026object.BucketAclArgs{\n\t\t\tBucket: main.ID(),\n\t\t\tAccessControlPolicy: \u0026object.BucketAclAccessControlPolicyArgs{\n\t\t\t\tGrants: object.BucketAclAccessControlPolicyGrantArray{\n\t\t\t\t\t\u0026object.BucketAclAccessControlPolicyGrantArgs{\n\t\t\t\t\t\tGrantee: \u0026object.BucketAclAccessControlPolicyGrantGranteeArgs{\n\t\t\t\t\t\t\tId:   pulumi.String(\"\u003cproject-id\u003e:\u003cproject-id\u003e\"),\n\t\t\t\t\t\t\tType: pulumi.String(\"CanonicalUser\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermission: pulumi.String(\"FULL_CONTROL\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026object.BucketAclAccessControlPolicyGrantArgs{\n\t\t\t\t\t\tGrantee: \u0026object.BucketAclAccessControlPolicyGrantGranteeArgs{\n\t\t\t\t\t\t\tId:   pulumi.String(\"\u003cproject-id\u003e\"),\n\t\t\t\t\t\t\tType: pulumi.String(\"CanonicalUser\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermission: pulumi.String(\"WRITE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOwner: \u0026object.BucketAclAccessControlPolicyOwnerArgs{\n\t\t\t\t\tId: pulumi.String(\"\u003cproject-id\u003e\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketAcl;\nimport com.pulumi.scaleway.object.BucketAclArgs;\nimport com.pulumi.scaleway.object.inputs.BucketAclAccessControlPolicyArgs;\nimport com.pulumi.scaleway.object.inputs.BucketAclAccessControlPolicyOwnerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"your-bucket\")\n            .build());\n\n        var mainBucketAcl = new BucketAcl(\"mainBucketAcl\", BucketAclArgs.builder()\n            .bucket(main.id())\n            .accessControlPolicy(BucketAclAccessControlPolicyArgs.builder()\n                .grants(                \n                    BucketAclAccessControlPolicyGrantArgs.builder()\n                        .grantee(BucketAclAccessControlPolicyGrantGranteeArgs.builder()\n                            .id(\"\u003cproject-id\u003e:\u003cproject-id\u003e\")\n                            .type(\"CanonicalUser\")\n                            .build())\n                        .permission(\"FULL_CONTROL\")\n                        .build(),\n                    BucketAclAccessControlPolicyGrantArgs.builder()\n                        .grantee(BucketAclAccessControlPolicyGrantGranteeArgs.builder()\n                            .id(\"\u003cproject-id\u003e\")\n                            .type(\"CanonicalUser\")\n                            .build())\n                        .permission(\"WRITE\")\n                        .build())\n                .owner(BucketAclAccessControlPolicyOwnerArgs.builder()\n                    .id(\"\u003cproject-id\u003e\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: your-bucket\n  mainBucketAcl:\n    type: scaleway:object:BucketAcl\n    name: main\n    properties:\n      bucket: ${main.id}\n      accessControlPolicy:\n        grants:\n          - grantee:\n              id: \u003cproject-id\u003e:\u003cproject-id\u003e\n              type: CanonicalUser\n            permission: FULL_CONTROL\n          - grantee:\n              id: \u003cproject-id\u003e\n              type: CanonicalUser\n            permission: WRITE\n        owner:\n          id: \u003cproject-id\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## The ACL\n\nRefer to the [official canned ACL documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) for more information on the different roles.\n\n## The access control policy\n\nThe \u003cspan pulumi-lang-nodejs=\"`accessControlPolicy`\" pulumi-lang-dotnet=\"`AccessControlPolicy`\" pulumi-lang-go=\"`accessControlPolicy`\" pulumi-lang-python=\"`access_control_policy`\" pulumi-lang-yaml=\"`accessControlPolicy`\" pulumi-lang-java=\"`accessControlPolicy`\"\u003e`accessControlPolicy`\u003c/span\u003e configuration block supports the following arguments:\n\n* \u003cspan pulumi-lang-nodejs=\"`grant`\" pulumi-lang-dotnet=\"`Grant`\" pulumi-lang-go=\"`grant`\" pulumi-lang-python=\"`grant`\" pulumi-lang-yaml=\"`grant`\" pulumi-lang-java=\"`grant`\"\u003e`grant`\u003c/span\u003e - (Required) Set of grant configuration blocks documented below.\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 - (Required) Configuration block of the bucket owner's display name and ID documented below.\n\n## The grant\n\nThe \u003cspan pulumi-lang-nodejs=\"`grant`\" pulumi-lang-dotnet=\"`Grant`\" pulumi-lang-go=\"`grant`\" pulumi-lang-python=\"`grant`\" pulumi-lang-yaml=\"`grant`\" pulumi-lang-java=\"`grant`\"\u003e`grant`\u003c/span\u003e configuration block supports the following arguments:\n\n* \u003cspan pulumi-lang-nodejs=\"`grantee`\" pulumi-lang-dotnet=\"`Grantee`\" pulumi-lang-go=\"`grantee`\" pulumi-lang-python=\"`grantee`\" pulumi-lang-yaml=\"`grantee`\" pulumi-lang-java=\"`grantee`\"\u003e`grantee`\u003c/span\u003e - (Required) Configuration block for the project being granted permissions documented below.\n* \u003cspan pulumi-lang-nodejs=\"`permission`\" pulumi-lang-dotnet=\"`Permission`\" pulumi-lang-go=\"`permission`\" pulumi-lang-python=\"`permission`\" pulumi-lang-yaml=\"`permission`\" pulumi-lang-java=\"`permission`\"\u003e`permission`\u003c/span\u003e - (Required) Logging permissions assigned to the grantee for the bucket.\n\n## The permission\n\nThe following list shows each access policy permissions supported.\n\n`READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`\n\nFor more information about ACL permissions in the S3 bucket, see [ACL permissions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html).\n\n## The owner\n\nThe \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 configuration block supports the following arguments:\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 - (Required) The ID of the project owner.\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) The display name of the owner.\n\n## the grantee\n\nThe \u003cspan pulumi-lang-nodejs=\"`grantee`\" pulumi-lang-dotnet=\"`Grantee`\" pulumi-lang-go=\"`grantee`\" pulumi-lang-python=\"`grantee`\" pulumi-lang-yaml=\"`grantee`\" pulumi-lang-java=\"`grantee`\"\u003e`grantee`\u003c/span\u003e configuration block supports the following arguments:\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 - (Optional) The canonical user ID of the grantee.\n* \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 - (Required) Type of grantee. Valid values: CanonicalUser, Group.\n* \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e - (Optional) The uri of the grantee if type is Group.\n\n## Import\n\nBucket ACLs can be imported using the `{region}/{bucketName}/{acl}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectBucketAcl:ObjectBucketAcl some_bucket fr-par/some-bucket/private\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectBucketAcl:ObjectBucketAcl some_bucket fr-par/some-bucket/private@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n",
            "properties": {
                "accessControlPolicy": {
                    "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicy:ObjectBucketAclAccessControlPolicy",
                    "description": "A configuration block that sets the ACL permissions for an object per grantee documented below.\n"
                },
                "acl": {
                    "type": "string",
                    "description": "The canned ACL you want to apply to the bucket. Refer to the [AWS Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) documentation page to find a list of all the supported canned ACLs.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "expectedBucketOwner": {
                    "type": "string",
                    "description": "The project ID of the expected bucket owner.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket ACLs. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The [region](https://www.scaleway.com/en/developers/api/#regions-and-zones) in which the bucket should be created.\n"
                }
            },
            "required": [
                "accessControlPolicy",
                "bucket",
                "projectId"
            ],
            "inputProperties": {
                "accessControlPolicy": {
                    "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicy:ObjectBucketAclAccessControlPolicy",
                    "description": "A configuration block that sets the ACL permissions for an object per grantee documented below.\n"
                },
                "acl": {
                    "type": "string",
                    "description": "The canned ACL you want to apply to the bucket. Refer to the [AWS Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) documentation page to find a list of all the supported canned ACLs.\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n",
                    "willReplaceOnChanges": true
                },
                "expectedBucketOwner": {
                    "type": "string",
                    "description": "The project ID of the expected bucket owner.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket ACLs. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The [region](https://www.scaleway.com/en/developers/api/#regions-and-zones) in which the bucket should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "bucket"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectBucketAcl resources.\n",
                "properties": {
                    "accessControlPolicy": {
                        "$ref": "#/types/scaleway:index/ObjectBucketAclAccessControlPolicy:ObjectBucketAclAccessControlPolicy",
                        "description": "A configuration block that sets the ACL permissions for an object per grantee documented below.\n"
                    },
                    "acl": {
                        "type": "string",
                        "description": "The canned ACL you want to apply to the bucket. Refer to the [AWS Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl_overview.html#canned-acl) documentation page to find a list of all the supported canned ACLs.\n"
                    },
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket, or its Terraform ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "expectedBucketOwner": {
                        "type": "string",
                        "description": "The project ID of the expected bucket owner.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket ACLs. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The [region](https://www.scaleway.com/en/developers/api/#regions-and-zones) in which the bucket should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectbucketacl.ObjectBucketAcl has been deprecated in favor of scaleway.object/bucketacl.BucketAcl"
        },
        "scaleway:index/objectBucketLockConfiguration:ObjectBucketLockConfiguration": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.BucketLockConfiguration`\" pulumi-lang-dotnet=\"`scaleway.object.BucketLockConfiguration`\" pulumi-lang-go=\"`object.BucketLockConfiguration`\" pulumi-lang-python=\"`object.BucketLockConfiguration`\" pulumi-lang-yaml=\"`scaleway.object.BucketLockConfiguration`\" pulumi-lang-java=\"`scaleway.object.BucketLockConfiguration`\"\u003e`scaleway.object.BucketLockConfiguration`\u003c/span\u003e resource allows you to create and manage an object lock configuration for [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/object-lock/) for more information on object lock.\n\n## Example Usage\n\n### Configure an Object Lock for a new bucket\n\n\u003e **Note:** \u003cspan pulumi-lang-nodejs=\"`objectLockEnabled`\" pulumi-lang-dotnet=\"`ObjectLockEnabled`\" pulumi-lang-go=\"`objectLockEnabled`\" pulumi-lang-python=\"`object_lock_enabled`\" pulumi-lang-yaml=\"`objectLockEnabled`\" pulumi-lang-java=\"`objectLockEnabled`\"\u003e`objectLockEnabled`\u003c/span\u003e must be 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 before configuring the lock.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {\n    name: \"MyBucket\",\n    acl: \"public-read\",\n    objectLockEnabled: true,\n});\nconst mainBucketLockConfiguration = new scaleway.object.BucketLockConfiguration(\"main\", {\n    bucket: main.name,\n    rule: {\n        defaultRetention: {\n            mode: \"GOVERNANCE\",\n            days: 1,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\",\n    name=\"MyBucket\",\n    acl=\"public-read\",\n    object_lock_enabled=True)\nmain_bucket_lock_configuration = scaleway.object.BucketLockConfiguration(\"main\",\n    bucket=main.name,\n    rule={\n        \"default_retention\": {\n            \"mode\": \"GOVERNANCE\",\n            \"days\": 1,\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"MyBucket\",\n        Acl = \"public-read\",\n        ObjectLockEnabled = true,\n    });\n\n    var mainBucketLockConfiguration = new Scaleway.Object.BucketLockConfiguration(\"main\", new()\n    {\n        Bucket = main.Name,\n        Rule = new Scaleway.Object.Inputs.BucketLockConfigurationRuleArgs\n        {\n            DefaultRetention = new Scaleway.Object.Inputs.BucketLockConfigurationRuleDefaultRetentionArgs\n            {\n                Mode = \"GOVERNANCE\",\n                Days = 1,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName:              pulumi.String(\"MyBucket\"),\n\t\t\tAcl:               pulumi.String(\"public-read\"),\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 = object.NewBucketLockConfiguration(ctx, \"main\", \u0026object.BucketLockConfigurationArgs{\n\t\t\tBucket: main.Name,\n\t\t\tRule: \u0026object.BucketLockConfigurationRuleArgs{\n\t\t\t\tDefaultRetention: \u0026object.BucketLockConfigurationRuleDefaultRetentionArgs{\n\t\t\t\t\tMode: pulumi.String(\"GOVERNANCE\"),\n\t\t\t\t\tDays: pulumi.Int(1),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketLockConfiguration;\nimport com.pulumi.scaleway.object.BucketLockConfigurationArgs;\nimport com.pulumi.scaleway.object.inputs.BucketLockConfigurationRuleArgs;\nimport com.pulumi.scaleway.object.inputs.BucketLockConfigurationRuleDefaultRetentionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"MyBucket\")\n            .acl(\"public-read\")\n            .objectLockEnabled(true)\n            .build());\n\n        var mainBucketLockConfiguration = new BucketLockConfiguration(\"mainBucketLockConfiguration\", BucketLockConfigurationArgs.builder()\n            .bucket(main.name())\n            .rule(BucketLockConfigurationRuleArgs.builder()\n                .defaultRetention(BucketLockConfigurationRuleDefaultRetentionArgs.builder()\n                    .mode(\"GOVERNANCE\")\n                    .days(1)\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: MyBucket\n      acl: public-read\n      objectLockEnabled: true\n  mainBucketLockConfiguration:\n    type: scaleway:object:BucketLockConfiguration\n    name: main\n    properties:\n      bucket: ${main.name}\n      rule:\n        defaultRetention:\n          mode: GOVERNANCE\n          days: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Configure an object Lock for an existing bucket\n\n[Contact Scaleway support](https://console.scaleway.com/support/tickets/create) to enable object lock on an existing bucket.\n\n## Import\n\nBucket lock configurations can be imported using the `{region}/{bucketName}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectBucketLockConfiguration:ObjectBucketLockConfiguration some_bucket fr-par/some-bucket\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectBucketLockConfiguration:ObjectBucketLockConfiguration some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike object lock configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to"
                },
                "rule": {
                    "$ref": "#/types/scaleway:index/ObjectBucketLockConfigurationRule:ObjectBucketLockConfigurationRule",
                    "description": "Specifies the object lock rule for the specified object.\n"
                }
            },
            "required": [
                "bucket",
                "projectId",
                "rule"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike object lock configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to",
                    "willReplaceOnChanges": true
                },
                "rule": {
                    "$ref": "#/types/scaleway:index/ObjectBucketLockConfigurationRule:ObjectBucketLockConfigurationRule",
                    "description": "Specifies the object lock rule for the specified object.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "rule"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectBucketLockConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket, or its Terraform ID.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike object lock configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region you want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "rule": {
                        "$ref": "#/types/scaleway:index/ObjectBucketLockConfigurationRule:ObjectBucketLockConfigurationRule",
                        "description": "Specifies the object lock rule for the specified object.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectbucketlockconfiguration.ObjectBucketLockConfiguration has been deprecated in favor of scaleway.object/bucketlockconfiguration.BucketLockConfiguration"
        },
        "scaleway:index/objectBucketPolicy:ObjectBucketPolicy": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.BucketPolicy`\" pulumi-lang-dotnet=\"`scaleway.object.BucketPolicy`\" pulumi-lang-go=\"`object.BucketPolicy`\" pulumi-lang-python=\"`object.BucketPolicy`\" pulumi-lang-yaml=\"`scaleway.object.BucketPolicy`\" pulumi-lang-java=\"`scaleway.object.BucketPolicy`\"\u003e`scaleway.object.BucketPolicy`\u003c/span\u003e resource allows you to create and manage bucket policies for [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/bucket-policy/) for more information on Object Storage bucket policies.\n\n## Example Usage\n\n### Example Usage with an IAM user\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Project ID\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM configuration\nconst user = scaleway.iam.getUser({\n    email: \"user@scaleway.com\",\n});\nconst policy = new scaleway.iam.Policy(\"policy\", {\n    name: \"object-storage-policy\",\n    userId: user.then(user =\u003e user.id),\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ObjectStorageFullAccess\"],\n    }],\n});\n// Object storage configuration\nconst bucket = new scaleway.object.Bucket(\"bucket\", {name: \"some-unique-name\"});\nconst policyBucketPolicy = new scaleway.object.BucketPolicy(\"policy\", {\n    bucket: bucket.name,\n    policy: pulumi.jsonStringify({\n        Version: \"2023-04-17\",\n        Id: \"MyBucketPolicy\",\n        Statement: [{\n            Effect: \"Allow\",\n            Action: [\"s3:*\"],\n            Principal: {\n                SCW: user.then(user =\u003e `user_id:${user.id}`),\n            },\n            Resource: [\n                bucket.name,\n                pulumi.interpolate`${bucket.name}/*`,\n            ],\n        }],\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# Project ID\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM configuration\nuser = scaleway.iam.get_user(email=\"user@scaleway.com\")\npolicy = scaleway.iam.Policy(\"policy\",\n    name=\"object-storage-policy\",\n    user_id=user.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ObjectStorageFullAccess\"],\n    }])\n# Object storage configuration\nbucket = scaleway.object.Bucket(\"bucket\", name=\"some-unique-name\")\npolicy_bucket_policy = scaleway.object.BucketPolicy(\"policy\",\n    bucket=bucket.name,\n    policy=pulumi.Output.json_dumps({\n        \"Version\": \"2023-04-17\",\n        \"Id\": \"MyBucketPolicy\",\n        \"Statement\": [{\n            \"Effect\": \"Allow\",\n            \"Action\": [\"s3:*\"],\n            \"Principal\": {\n                \"SCW\": f\"user_id:{user.id}\",\n            },\n            \"Resource\": [\n                bucket.name,\n                bucket.name.apply(lambda name: f\"{name}/*\"),\n            ],\n        }],\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project ID\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM configuration\n    var user = Scaleway.Iam.GetUser.Invoke(new()\n    {\n        Email = \"user@scaleway.com\",\n    });\n\n    var policy = new Scaleway.Iam.Policy(\"policy\", new()\n    {\n        Name = \"object-storage-policy\",\n        UserId = user.Apply(getUserResult =\u003e getUserResult.Id),\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageFullAccess\",\n                },\n            },\n        },\n    });\n\n    // Object storage configuration\n    var bucket = new Scaleway.Object.Bucket(\"bucket\", new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n    var policyBucketPolicy = new Scaleway.Object.BucketPolicy(\"policy\", new()\n    {\n        Bucket = bucket.Name,\n        Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2023-04-17\",\n            [\"Id\"] = \"MyBucketPolicy\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Effect\"] = \"Allow\",\n                    [\"Action\"] = new[]\n                    {\n                        \"s3:*\",\n                    },\n                    [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"SCW\"] = $\"user_id:{user.Apply(getUserResult =\u003e getUserResult.Id)}\",\n                    },\n                    [\"Resource\"] = new[]\n                    {\n                        bucket.Name,\n                        bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n                    },\n                },\n            },\n        })),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project ID\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM configuration\n\t\tuser, err := iam.LookupUser(ctx, \u0026iam.LookupUserArgs{\n\t\t\tEmail: pulumi.StringRef(\"user@scaleway.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"policy\", \u0026iam.PolicyArgs{\n\t\t\tName:   pulumi.String(\"object-storage-policy\"),\n\t\t\tUserId: pulumi.String(pulumi.String(user.Id)),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageFullAccess\"),\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// Object storage configuration\n\t\tbucket, err := object.NewBucket(ctx, \"bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketPolicy(ctx, \"policy\", \u0026object.BucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Id\":      \"MyBucketPolicy\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:*\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"user_id:%v\", user.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\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\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, 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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.IamFunctions;\nimport com.pulumi.scaleway.iam.inputs.GetUserArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketPolicy;\nimport com.pulumi.scaleway.object.BucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project ID\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM configuration\n        final var user = IamFunctions.getUser(GetUserArgs.builder()\n            .email(\"user@scaleway.com\")\n            .build());\n\n        var policy = new Policy(\"policy\", PolicyArgs.builder()\n            .name(\"object-storage-policy\")\n            .userId(user.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ObjectStorageFullAccess\")\n                .build())\n            .build());\n\n        // Object storage configuration\n        var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n        var policyBucketPolicy = new BucketPolicy(\"policyBucketPolicy\", BucketPolicyArgs.builder()\n            .bucket(bucket.name())\n            .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n                var bucketName = values.t1;\n                var bucketName1 = values.t2;\n                return serializeJson(\n                    jsonObject(\n                        jsonProperty(\"Version\", \"2023-04-17\"),\n                        jsonProperty(\"Id\", \"MyBucketPolicy\"),\n                        jsonProperty(\"Statement\", jsonArray(jsonObject(\n                            jsonProperty(\"Effect\", \"Allow\"),\n                            jsonProperty(\"Action\", jsonArray(\"s3:*\")),\n                            jsonProperty(\"Principal\", jsonObject(\n                                jsonProperty(\"SCW\", String.format(\"user_id:%s\", user.id()))\n                            )),\n                            jsonProperty(\"Resource\", jsonArray(\n                                bucketName, \n                                String.format(\"%s/*\", bucketName1)\n                            ))\n                        )))\n                    ));\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  policy:\n    type: scaleway:iam:Policy\n    properties:\n      name: object-storage-policy\n      userId: ${user.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ObjectStorageFullAccess\n  # Object storage configuration\n  bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: some-unique-name\n  policyBucketPolicy:\n    type: scaleway:object:BucketPolicy\n    name: policy\n    properties:\n      bucket: ${bucket.name}\n      policy:\n        fn::toJSON:\n          Version: 2023-04-17\n          Id: MyBucketPolicy\n          Statement:\n            - Effect: Allow\n              Action:\n                - s3:*\n              Principal:\n                SCW: user_id:${user.id}\n              Resource:\n                - ${bucket.name}\n                - ${bucket.name}/*\nvariables:\n  # Project ID\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n  # IAM configuration\n  user:\n    fn::invoke:\n      function: scaleway:iam:getUser\n      arguments:\n        email: user@scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with an IAM application\n\n### Creating a bucket and delegating read access to an application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Project ID\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// IAM configuration\nconst reading_app = new scaleway.iam.Application(\"reading-app\", {name: \"reading-app\"});\nconst policy = new scaleway.iam.Policy(\"policy\", {\n    name: \"object-storage-policy\",\n    applicationId: reading_app.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ObjectStorageBucketsRead\"],\n    }],\n});\n// Object storage configuration\nconst bucket = new scaleway.object.Bucket(\"bucket\", {name: \"some-unique-name\"});\nconst policyBucketPolicy = new scaleway.object.BucketPolicy(\"policy\", {\n    bucket: bucket.id,\n    policy: pulumi.jsonStringify({\n        Version: \"2023-04-17\",\n        Statement: [{\n            Sid: \"Delegate read access\",\n            Effect: \"Allow\",\n            Principal: {\n                SCW: pulumi.interpolate`application_id:${reading_app.id}`,\n            },\n            Action: [\n                \"s3:ListBucket\",\n                \"s3:GetObject\",\n            ],\n            Resource: [\n                bucket.name,\n                pulumi.interpolate`${bucket.name}/*`,\n            ],\n        }],\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# Project ID\ndefault = scaleway.account.get_project(name=\"default\")\n# IAM configuration\nreading_app = scaleway.iam.Application(\"reading-app\", name=\"reading-app\")\npolicy = scaleway.iam.Policy(\"policy\",\n    name=\"object-storage-policy\",\n    application_id=reading_app.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ObjectStorageBucketsRead\"],\n    }])\n# Object storage configuration\nbucket = scaleway.object.Bucket(\"bucket\", name=\"some-unique-name\")\npolicy_bucket_policy = scaleway.object.BucketPolicy(\"policy\",\n    bucket=bucket.id,\n    policy=pulumi.Output.json_dumps({\n        \"Version\": \"2023-04-17\",\n        \"Statement\": [{\n            \"Sid\": \"Delegate read access\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"SCW\": reading_app.id.apply(lambda id: f\"application_id:{id}\"),\n            },\n            \"Action\": [\n                \"s3:ListBucket\",\n                \"s3:GetObject\",\n            ],\n            \"Resource\": [\n                bucket.name,\n                bucket.name.apply(lambda name: f\"{name}/*\"),\n            ],\n        }],\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project ID\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // IAM configuration\n    var reading_app = new Scaleway.Iam.Application(\"reading-app\", new()\n    {\n        Name = \"reading-app\",\n    });\n\n    var policy = new Scaleway.Iam.Policy(\"policy\", new()\n    {\n        Name = \"object-storage-policy\",\n        ApplicationId = reading_app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ObjectStorageBucketsRead\",\n                },\n            },\n        },\n    });\n\n    // Object storage configuration\n    var bucket = new Scaleway.Object.Bucket(\"bucket\", new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n    var policyBucketPolicy = new Scaleway.Object.BucketPolicy(\"policy\", new()\n    {\n        Bucket = bucket.Id,\n        Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2023-04-17\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Sid\"] = \"Delegate read access\",\n                    [\"Effect\"] = \"Allow\",\n                    [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"SCW\"] = reading_app.Id.Apply(id =\u003e $\"application_id:{id}\"),\n                    },\n                    [\"Action\"] = new[]\n                    {\n                        \"s3:ListBucket\",\n                        \"s3:GetObject\",\n                    },\n                    [\"Resource\"] = new[]\n                    {\n                        bucket.Name,\n                        bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n                    },\n                },\n            },\n        })),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project ID\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// IAM configuration\n\t\treading_app, err := iam.NewApplication(ctx, \"reading-app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"reading-app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"policy\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"object-storage-policy\"),\n\t\t\tApplicationId: reading_app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ObjectStorageBucketsRead\"),\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// Object storage configuration\n\t\tbucket, err := object.NewBucket(ctx, \"bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketPolicy(ctx, \"policy\", \u0026object.BucketPolicyArgs{\n\t\t\tBucket: bucket.ID(),\n\t\t\tPolicy: pulumi.All(reading_app.ID(), bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tid := _args[0].(string)\n\t\t\t\tbucketName := _args[1].(string)\n\t\t\t\tbucketName1 := _args[2].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2023-04-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\":    \"Delegate read access\",\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"application_id:%v\", id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObject\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\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\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, 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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketPolicy;\nimport com.pulumi.scaleway.object.BucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project ID\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // IAM configuration\n        var reading_app = new Application(\"reading-app\", ApplicationArgs.builder()\n            .name(\"reading-app\")\n            .build());\n\n        var policy = new Policy(\"policy\", PolicyArgs.builder()\n            .name(\"object-storage-policy\")\n            .applicationId(reading_app.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ObjectStorageBucketsRead\")\n                .build())\n            .build());\n\n        // Object storage configuration\n        var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n        var policyBucketPolicy = new BucketPolicy(\"policyBucketPolicy\", BucketPolicyArgs.builder()\n            .bucket(bucket.id())\n            .policy(Output.tuple(reading_app.id(), bucket.name(), bucket.name()).applyValue(values -\u003e {\n                var id = values.t1;\n                var bucketName = values.t2;\n                var bucketName1 = values.t3;\n                return serializeJson(\n                    jsonObject(\n                        jsonProperty(\"Version\", \"2023-04-17\"),\n                        jsonProperty(\"Statement\", jsonArray(jsonObject(\n                            jsonProperty(\"Sid\", \"Delegate read access\"),\n                            jsonProperty(\"Effect\", \"Allow\"),\n                            jsonProperty(\"Principal\", jsonObject(\n                                jsonProperty(\"SCW\", String.format(\"application_id:%s\", id))\n                            )),\n                            jsonProperty(\"Action\", jsonArray(\n                                \"s3:ListBucket\", \n                                \"s3:GetObject\"\n                            )),\n                            jsonProperty(\"Resource\", jsonArray(\n                                bucketName, \n                                String.format(\"%s/*\", bucketName1)\n                            ))\n                        )))\n                    ));\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # IAM configuration\n  reading-app:\n    type: scaleway:iam:Application\n    properties:\n      name: reading-app\n  policy:\n    type: scaleway:iam:Policy\n    properties:\n      name: object-storage-policy\n      applicationId: ${[\"reading-app\"].id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ObjectStorageBucketsRead\n  # Object storage configuration\n  bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: some-unique-name\n  policyBucketPolicy:\n    type: scaleway:object:BucketPolicy\n    name: policy\n    properties:\n      bucket: ${bucket.id}\n      policy:\n        fn::toJSON:\n          Version: 2023-04-17\n          Statement:\n            - Sid: Delegate read access\n              Effect: Allow\n              Principal:\n                SCW: application_id:${[\"reading-app\"].id}\n              Action:\n                - s3:ListBucket\n                - s3:GetObject\n              Resource:\n                - ${bucket.name}\n                - ${bucket.name}/*\nvariables:\n  # Project ID\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Reading the bucket with the application\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst reading_app = scaleway.iam.getApplication({\n    name: \"reading-app\",\n});\nconst reading_api_key = new scaleway.iam.ApiKey(\"reading-api-key\", {applicationId: reading_app.then(reading_app =\u003e reading_app.id)});\nconst bucket = scaleway.object.getBucket({\n    name: \"some-unique-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nreading_app = scaleway.iam.get_application(name=\"reading-app\")\nreading_api_key = scaleway.iam.ApiKey(\"reading-api-key\", application_id=reading_app.id)\nbucket = scaleway.object.get_bucket(name=\"some-unique-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var reading_app = Scaleway.Iam.GetApplication.Invoke(new()\n    {\n        Name = \"reading-app\",\n    });\n\n    var reading_api_key = new Scaleway.Iam.ApiKey(\"reading-api-key\", new()\n    {\n        ApplicationId = reading_app.Apply(reading_app =\u003e reading_app.Apply(getApplicationResult =\u003e getApplicationResult.Id)),\n    });\n\n    var bucket = Scaleway.Object.GetBucket.Invoke(new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\treading_app, err := iam.LookupApplication(ctx, \u0026iam.LookupApplicationArgs{\n\t\t\tName: pulumi.StringRef(\"reading-app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewApiKey(ctx, \"reading-api-key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: pulumi.String(pulumi.String(reading_app.Id)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.LookupBucket(ctx, \u0026object.LookupBucketArgs{\n\t\t\tName: pulumi.StringRef(\"some-unique-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.scaleway.iam.IamFunctions;\nimport com.pulumi.scaleway.iam.inputs.GetApplicationArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.object.ObjectFunctions;\nimport com.pulumi.scaleway.object.inputs.GetBucketArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 reading-app = IamFunctions.getApplication(GetApplicationArgs.builder()\n            .name(\"reading-app\")\n            .build());\n\n        var reading_api_key = new ApiKey(\"reading-api-key\", ApiKeyArgs.builder()\n            .applicationId(reading_app.id())\n            .build());\n\n        final var bucket = ObjectFunctions.getBucket(GetBucketArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  reading-api-key:\n    type: scaleway:iam:ApiKey\n    properties:\n      applicationId: ${[\"reading-app\"].id}\nvariables:\n  reading-app:\n    fn::invoke:\n      function: scaleway:iam:getApplication\n      arguments:\n        name: reading-app\n  bucket:\n    fn::invoke:\n      function: scaleway:object:getBucket\n      arguments:\n        name: some-unique-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with deprecated version 2012-10-17\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n// Project ID\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\n// Object storage configuration\nconst bucket = new scaleway.object.Bucket(\"bucket\", {\n    name: \"mia-cross-crash-tests\",\n    region: \"fr-par\",\n});\nconst policy = new scaleway.object.BucketPolicy(\"policy\", {\n    bucket: bucket.name,\n    policy: pulumi.jsonStringify({\n        Version: \"2012-10-17\",\n        Statement: [{\n            Effect: \"Allow\",\n            Action: [\n                \"s3:ListBucket\",\n                \"s3:GetObjectTagging\",\n            ],\n            Principal: {\n                SCW: _default.then(_default =\u003e `project_id:${_default.id}`),\n            },\n            Resource: [\n                bucket.name,\n                pulumi.interpolate`${bucket.name}/*`,\n            ],\n        }],\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\n# Project ID\ndefault = scaleway.account.get_project(name=\"default\")\n# Object storage configuration\nbucket = scaleway.object.Bucket(\"bucket\",\n    name=\"mia-cross-crash-tests\",\n    region=\"fr-par\")\npolicy = scaleway.object.BucketPolicy(\"policy\",\n    bucket=bucket.name,\n    policy=pulumi.Output.json_dumps({\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [{\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:ListBucket\",\n                \"s3:GetObjectTagging\",\n            ],\n            \"Principal\": {\n                \"SCW\": f\"project_id:{default.id}\",\n            },\n            \"Resource\": [\n                bucket.name,\n                bucket.name.apply(lambda name: f\"{name}/*\"),\n            ],\n        }],\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Project ID\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    // Object storage configuration\n    var bucket = new Scaleway.Object.Bucket(\"bucket\", new()\n    {\n        Name = \"mia-cross-crash-tests\",\n        Region = \"fr-par\",\n    });\n\n    var policy = new Scaleway.Object.BucketPolicy(\"policy\", new()\n    {\n        Bucket = bucket.Name,\n        Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2012-10-17\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Effect\"] = \"Allow\",\n                    [\"Action\"] = new[]\n                    {\n                        \"s3:ListBucket\",\n                        \"s3:GetObjectTagging\",\n                    },\n                    [\"Principal\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"SCW\"] = @default.Apply(@default =\u003e $\"project_id:{@default.Apply(getProjectResult =\u003e getProjectResult.Id)}\"),\n                    },\n                    [\"Resource\"] = new[]\n                    {\n                        bucket.Name,\n                        bucket.Name.Apply(name =\u003e $\"{name}/*\"),\n                    },\n                },\n            },\n        })),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Project ID\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Object storage configuration\n\t\tbucket, err := object.NewBucket(ctx, \"bucket\", \u0026object.BucketArgs{\n\t\t\tName:   pulumi.String(\"mia-cross-crash-tests\"),\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketPolicy(ctx, \"policy\", \u0026object.BucketPolicyArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPolicy: pulumi.All(bucket.Name, bucket.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\tbucketName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Effect\": \"Allow\",\n\t\t\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\t\t\"s3:ListBucket\",\n\t\t\t\t\t\t\t\t\"s3:GetObjectTagging\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Principal\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"SCW\": fmt.Sprintf(\"project_id:%v\", _default.Id),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tbucketName,\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"%v/*\", bucketName1),\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\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, 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.pulumi.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketPolicy;\nimport com.pulumi.scaleway.object.BucketPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Project ID\n        final var default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        // Object storage configuration\n        var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n            .name(\"mia-cross-crash-tests\")\n            .region(\"fr-par\")\n            .build());\n\n        var policy = new BucketPolicy(\"policy\", BucketPolicyArgs.builder()\n            .bucket(bucket.name())\n            .policy(Output.tuple(bucket.name(), bucket.name()).applyValue(values -\u003e {\n                var bucketName = values.t1;\n                var bucketName1 = values.t2;\n                return serializeJson(\n                    jsonObject(\n                        jsonProperty(\"Version\", \"2012-10-17\"),\n                        jsonProperty(\"Statement\", jsonArray(jsonObject(\n                            jsonProperty(\"Effect\", \"Allow\"),\n                            jsonProperty(\"Action\", jsonArray(\n                                \"s3:ListBucket\", \n                                \"s3:GetObjectTagging\"\n                            )),\n                            jsonProperty(\"Principal\", jsonObject(\n                                jsonProperty(\"SCW\", String.format(\"project_id:%s\", default_.id()))\n                            )),\n                            jsonProperty(\"Resource\", jsonArray(\n                                bucketName, \n                                String.format(\"%s/*\", bucketName1)\n                            ))\n                        )))\n                    ));\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Object storage configuration\n  bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: mia-cross-crash-tests\n      region: fr-par\n  policy:\n    type: scaleway:object:BucketPolicy\n    properties:\n      bucket: ${bucket.name}\n      policy:\n        fn::toJSON:\n          Version: 2012-10-17\n          Statement:\n            - Effect: Allow\n              Action:\n                - s3:ListBucket\n                - s3:GetObjectTagging\n              Principal:\n                SCW: project_id:${default.id}\n              Resource:\n                - ${bucket.name}\n                - ${bucket.name}/*\nvariables:\n  # Project ID\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n**NB:** To configure the AWS provider with Scaleway credentials, refer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/api-cli/object-storage-aws-cli/).\n\n## Import\n\nBucket policies can be imported using the `{region}/{bucketName}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents with Terraform, refer to the official documentation.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket policies. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n\n\u003e **Important:** The\u003cspan pulumi-lang-nodejs=\" awsIamPolicyDocument \" pulumi-lang-dotnet=\" AwsIamPolicyDocument \" pulumi-lang-go=\" awsIamPolicyDocument \" pulumi-lang-python=\" aws_iam_policy_document \" pulumi-lang-yaml=\" awsIamPolicyDocument \" pulumi-lang-java=\" awsIamPolicyDocument \"\u003e awsIamPolicyDocument \u003c/span\u003edata source may be used, as long as it specifies a principal.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this bucket resides in.\n"
                }
            },
            "required": [
                "bucket",
                "policy",
                "projectId"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents with Terraform, refer to the official documentation.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket policies. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n\n\u003e **Important:** The\u003cspan pulumi-lang-nodejs=\" awsIamPolicyDocument \" pulumi-lang-dotnet=\" AwsIamPolicyDocument \" pulumi-lang-go=\" awsIamPolicyDocument \" pulumi-lang-python=\" aws_iam_policy_document \" pulumi-lang-yaml=\" awsIamPolicyDocument \" pulumi-lang-java=\" awsIamPolicyDocument \"\u003e awsIamPolicyDocument \u003c/span\u003edata source may be used, as long as it specifies a principal.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region this bucket resides in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "bucket",
                "policy"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectBucketPolicy resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket, or its Terraform ID.\n"
                    },
                    "policy": {
                        "type": "string",
                        "description": "The policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents with Terraform, refer to the official documentation.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket policies. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n\n\u003e **Important:** The\u003cspan pulumi-lang-nodejs=\" awsIamPolicyDocument \" pulumi-lang-dotnet=\" AwsIamPolicyDocument \" pulumi-lang-go=\" awsIamPolicyDocument \" pulumi-lang-python=\" aws_iam_policy_document \" pulumi-lang-yaml=\" awsIamPolicyDocument \" pulumi-lang-java=\" awsIamPolicyDocument \"\u003e awsIamPolicyDocument \u003c/span\u003edata source may be used, as long as it specifies a principal.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The Scaleway region this bucket resides in.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectbucketpolicy.ObjectBucketPolicy has been deprecated in favor of scaleway.object/bucketpolicy.BucketPolicy"
        },
        "scaleway:index/objectBucketWebsiteConfiguration:ObjectBucketWebsiteConfiguration": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.BucketWebsiteConfiguration`\" pulumi-lang-dotnet=\"`scaleway.object.BucketWebsiteConfiguration`\" pulumi-lang-go=\"`object.BucketWebsiteConfiguration`\" pulumi-lang-python=\"`object.BucketWebsiteConfiguration`\" pulumi-lang-yaml=\"`scaleway.object.BucketWebsiteConfiguration`\" pulumi-lang-java=\"`scaleway.object.BucketWebsiteConfiguration`\"\u003e`scaleway.object.BucketWebsiteConfiguration`\u003c/span\u003e resource allows you to deploy and manage a bucket website with [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/how-to/use-bucket-website/) for more information on bucket websites.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst test = new scaleway.object.Bucket(\"test\", {\n    name: \"my-bucket\",\n    acl: \"public-read\",\n});\nconst someFile = new scaleway.object.Item(\"some_file\", {\n    bucket: test.name,\n    key: \"index.html\",\n    file: \"index.html\",\n    visibility: \"public-read\",\n    contentType: \"text/html\",\n});\nconst testBucketWebsiteConfiguration = new scaleway.object.BucketWebsiteConfiguration(\"test\", {\n    bucket: test.name,\n    indexDocument: {\n        suffix: \"index.html\",\n    },\n    errorDocument: {\n        key: \"error.html\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntest = scaleway.object.Bucket(\"test\",\n    name=\"my-bucket\",\n    acl=\"public-read\")\nsome_file = scaleway.object.Item(\"some_file\",\n    bucket=test.name,\n    key=\"index.html\",\n    file=\"index.html\",\n    visibility=\"public-read\",\n    content_type=\"text/html\")\ntest_bucket_website_configuration = scaleway.object.BucketWebsiteConfiguration(\"test\",\n    bucket=test.name,\n    index_document={\n        \"suffix\": \"index.html\",\n    },\n    error_document={\n        \"key\": \"error.html\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new Scaleway.Object.Bucket(\"test\", new()\n    {\n        Name = \"my-bucket\",\n        Acl = \"public-read\",\n    });\n\n    var someFile = new Scaleway.Object.Item(\"some_file\", new()\n    {\n        Bucket = test.Name,\n        Key = \"index.html\",\n        File = \"index.html\",\n        Visibility = \"public-read\",\n        ContentType = \"text/html\",\n    });\n\n    var testBucketWebsiteConfiguration = new Scaleway.Object.BucketWebsiteConfiguration(\"test\", new()\n    {\n        Bucket = test.Name,\n        IndexDocument = new Scaleway.Object.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n        {\n            Suffix = \"index.html\",\n        },\n        ErrorDocument = new Scaleway.Object.Inputs.BucketWebsiteConfigurationErrorDocumentArgs\n        {\n            Key = \"error.html\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := object.NewBucket(ctx, \"test\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tAcl:  pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"some_file\", \u0026object.ItemArgs{\n\t\t\tBucket:      test.Name,\n\t\t\tKey:         pulumi.String(\"index.html\"),\n\t\t\tFile:        pulumi.String(\"index.html\"),\n\t\t\tVisibility:  pulumi.String(\"public-read\"),\n\t\t\tContentType: pulumi.String(\"text/html\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewBucketWebsiteConfiguration(ctx, \"test\", \u0026object.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: test.Name,\n\t\t\tIndexDocument: \u0026object.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\n\t\t\t},\n\t\t\tErrorDocument: \u0026object.BucketWebsiteConfigurationErrorDocumentArgs{\n\t\t\t\tKey: pulumi.String(\"error.html\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.object.BucketWebsiteConfiguration;\nimport com.pulumi.scaleway.object.BucketWebsiteConfigurationArgs;\nimport com.pulumi.scaleway.object.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport com.pulumi.scaleway.object.inputs.BucketWebsiteConfigurationErrorDocumentArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Bucket(\"test\", BucketArgs.builder()\n            .name(\"my-bucket\")\n            .acl(\"public-read\")\n            .build());\n\n        var someFile = new Item(\"someFile\", ItemArgs.builder()\n            .bucket(test.name())\n            .key(\"index.html\")\n            .file(\"index.html\")\n            .visibility(\"public-read\")\n            .contentType(\"text/html\")\n            .build());\n\n        var testBucketWebsiteConfiguration = new BucketWebsiteConfiguration(\"testBucketWebsiteConfiguration\", BucketWebsiteConfigurationArgs.builder()\n            .bucket(test.name())\n            .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n                .suffix(\"index.html\")\n                .build())\n            .errorDocument(BucketWebsiteConfigurationErrorDocumentArgs.builder()\n                .key(\"error.html\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: scaleway:object:Bucket\n    properties:\n      name: my-bucket\n      acl: public-read\n  someFile:\n    type: scaleway:object:Item\n    name: some_file\n    properties:\n      bucket: ${test.name}\n      key: index.html\n      file: index.html\n      visibility: public-read\n      contentType: text/html\n  testBucketWebsiteConfiguration:\n    type: scaleway:object:BucketWebsiteConfiguration\n    name: test\n    properties:\n      bucket: ${test.name}\n      indexDocument:\n        suffix: index.html\n      errorDocument:\n        key: error.html\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With A Bucket Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.object.Bucket(\"main\", {\n    name: \"MyBucket\",\n    acl: \"public-read\",\n});\nconst mainBucketPolicy = new scaleway.object.BucketPolicy(\"main\", {\n    bucket: main.id,\n    policy: JSON.stringify({\n        Version: \"2012-10-17\",\n        Id: \"MyPolicy\",\n        Statement: [{\n            Sid: \"GrantToEveryone\",\n            Effect: \"Allow\",\n            Principal: \"*\",\n            Action: [\"s3:GetObject\"],\n            Resource: [\"\u003cbucket-name\u003e/*\"],\n        }],\n    }),\n});\nconst mainBucketWebsiteConfiguration = new scaleway.object.BucketWebsiteConfiguration(\"main\", {\n    bucket: main.id,\n    indexDocument: {\n        suffix: \"index.html\",\n    },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.object.Bucket(\"main\",\n    name=\"MyBucket\",\n    acl=\"public-read\")\nmain_bucket_policy = scaleway.object.BucketPolicy(\"main\",\n    bucket=main.id,\n    policy=json.dumps({\n        \"Version\": \"2012-10-17\",\n        \"Id\": \"MyPolicy\",\n        \"Statement\": [{\n            \"Sid\": \"GrantToEveryone\",\n            \"Effect\": \"Allow\",\n            \"Principal\": \"*\",\n            \"Action\": [\"s3:GetObject\"],\n            \"Resource\": [\"\u003cbucket-name\u003e/*\"],\n        }],\n    }))\nmain_bucket_website_configuration = scaleway.object.BucketWebsiteConfiguration(\"main\",\n    bucket=main.id,\n    index_document={\n        \"suffix\": \"index.html\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Object.Bucket(\"main\", new()\n    {\n        Name = \"MyBucket\",\n        Acl = \"public-read\",\n    });\n\n    var mainBucketPolicy = new Scaleway.Object.BucketPolicy(\"main\", new()\n    {\n        Bucket = main.Id,\n        Policy = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2012-10-17\",\n            [\"Id\"] = \"MyPolicy\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Sid\"] = \"GrantToEveryone\",\n                    [\"Effect\"] = \"Allow\",\n                    [\"Principal\"] = \"*\",\n                    [\"Action\"] = new[]\n                    {\n                        \"s3:GetObject\",\n                    },\n                    [\"Resource\"] = new[]\n                    {\n                        \"\u003cbucket-name\u003e/*\",\n                    },\n                },\n            },\n        }),\n    });\n\n    var mainBucketWebsiteConfiguration = new Scaleway.Object.BucketWebsiteConfiguration(\"main\", new()\n    {\n        Bucket = main.Id,\n        IndexDocument = new Scaleway.Object.Inputs.BucketWebsiteConfigurationIndexDocumentArgs\n        {\n            Suffix = \"index.html\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := object.NewBucket(ctx, \"main\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"MyBucket\"),\n\t\t\tAcl:  pulumi.String(\"public-read\"),\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\"Id\":      \"MyPolicy\",\n\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"Sid\":       \"GrantToEveryone\",\n\t\t\t\t\t\"Effect\":    \"Allow\",\n\t\t\t\t\t\"Principal\": \"*\",\n\t\t\t\t\t\"Action\": []string{\n\t\t\t\t\t\t\"s3:GetObject\",\n\t\t\t\t\t},\n\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\"\u003cbucket-name\u003e/*\",\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 = object.NewBucketPolicy(ctx, \"main\", \u0026object.BucketPolicyArgs{\n\t\t\tBucket: main.ID(),\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\t_, err = object.NewBucketWebsiteConfiguration(ctx, \"main\", \u0026object.BucketWebsiteConfigurationArgs{\n\t\t\tBucket: main.ID(),\n\t\t\tIndexDocument: \u0026object.BucketWebsiteConfigurationIndexDocumentArgs{\n\t\t\t\tSuffix: pulumi.String(\"index.html\"),\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.BucketPolicy;\nimport com.pulumi.scaleway.object.BucketPolicyArgs;\nimport com.pulumi.scaleway.object.BucketWebsiteConfiguration;\nimport com.pulumi.scaleway.object.BucketWebsiteConfigurationArgs;\nimport com.pulumi.scaleway.object.inputs.BucketWebsiteConfigurationIndexDocumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Bucket(\"main\", BucketArgs.builder()\n            .name(\"MyBucket\")\n            .acl(\"public-read\")\n            .build());\n\n        var mainBucketPolicy = new BucketPolicy(\"mainBucketPolicy\", BucketPolicyArgs.builder()\n            .bucket(main.id())\n            .policy(serializeJson(\n                jsonObject(\n                    jsonProperty(\"Version\", \"2012-10-17\"),\n                    jsonProperty(\"Id\", \"MyPolicy\"),\n                    jsonProperty(\"Statement\", jsonArray(jsonObject(\n                        jsonProperty(\"Sid\", \"GrantToEveryone\"),\n                        jsonProperty(\"Effect\", \"Allow\"),\n                        jsonProperty(\"Principal\", \"*\"),\n                        jsonProperty(\"Action\", jsonArray(\"s3:GetObject\")),\n                        jsonProperty(\"Resource\", jsonArray(\"\u003cbucket-name\u003e/*\"))\n                    )))\n                )))\n            .build());\n\n        var mainBucketWebsiteConfiguration = new BucketWebsiteConfiguration(\"mainBucketWebsiteConfiguration\", BucketWebsiteConfigurationArgs.builder()\n            .bucket(main.id())\n            .indexDocument(BucketWebsiteConfigurationIndexDocumentArgs.builder()\n                .suffix(\"index.html\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:object:Bucket\n    properties:\n      name: MyBucket\n      acl: public-read\n  mainBucketPolicy:\n    type: scaleway:object:BucketPolicy\n    name: main\n    properties:\n      bucket: ${main.id}\n      policy:\n        fn::toJSON:\n          Version: 2012-10-17\n          Id: MyPolicy\n          Statement:\n            - Sid: GrantToEveryone\n              Effect: Allow\n              Principal: '*'\n              Action:\n                - s3:GetObject\n              Resource:\n                - \u003cbucket-name\u003e/*\n  mainBucketWebsiteConfiguration:\n    type: scaleway:object:BucketWebsiteConfiguration\n    name: main\n    properties:\n      bucket: ${main.id}\n      indexDocument:\n        suffix: index.html\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBucket website configurations can be imported using the `{region}/{bucketName}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectBucketWebsiteConfiguration:ObjectBucketWebsiteConfiguration some_bucket fr-par/some-bucket\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectBucketWebsiteConfiguration:ObjectBucketWebsiteConfiguration some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket.\n"
                },
                "errorDocument": {
                    "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationErrorDocument:ObjectBucketWebsiteConfigurationErrorDocument",
                    "description": "The name of the error file for the website detailed below.\n"
                },
                "indexDocument": {
                    "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationIndexDocument:ObjectBucketWebsiteConfigurationIndexDocument",
                    "description": "The name of the index file for the website detailed below.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket website configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to"
                },
                "websiteDomain": {
                    "type": "string",
                    "description": "The domain of the website endpoint. This is used to create DNS alias [records](https://www.scaleway.com/en/docs/network/domains-and-dns/how-to/manage-dns-records/).\n"
                },
                "websiteEndpoint": {
                    "type": "string",
                    "description": "The website endpoint.\n"
                }
            },
            "required": [
                "bucket",
                "indexDocument",
                "projectId",
                "websiteDomain",
                "websiteEndpoint"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket.\n",
                    "willReplaceOnChanges": true
                },
                "errorDocument": {
                    "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationErrorDocument:ObjectBucketWebsiteConfigurationErrorDocument",
                    "description": "The name of the error file for the website detailed below.\n"
                },
                "indexDocument": {
                    "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationIndexDocument:ObjectBucketWebsiteConfigurationIndexDocument",
                    "description": "The name of the index file for the website detailed below.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket website configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "bucket",
                "indexDocument"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectBucketWebsiteConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket.\n",
                        "willReplaceOnChanges": true
                    },
                    "errorDocument": {
                        "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationErrorDocument:ObjectBucketWebsiteConfigurationErrorDocument",
                        "description": "The name of the error file for the website detailed below.\n"
                    },
                    "indexDocument": {
                        "$ref": "#/types/scaleway:index/ObjectBucketWebsiteConfigurationIndexDocument:ObjectBucketWebsiteConfigurationIndexDocument",
                        "description": "The name of the index file for the website detailed below.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products, because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike bucket website configurations. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region you want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "websiteDomain": {
                        "type": "string",
                        "description": "The domain of the website endpoint. This is used to create DNS alias [records](https://www.scaleway.com/en/docs/network/domains-and-dns/how-to/manage-dns-records/).\n"
                    },
                    "websiteEndpoint": {
                        "type": "string",
                        "description": "The website endpoint.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectbucketwebsiteconfiguration.ObjectBucketWebsiteConfiguration has been deprecated in favor of scaleway.object/bucketwebsiteconfiguration.BucketWebsiteConfiguration"
        },
        "scaleway:index/objectItem:ObjectItem": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.object.Item`\" pulumi-lang-dotnet=\"`scaleway.object.Item`\" pulumi-lang-go=\"`object.Item`\" pulumi-lang-python=\"`object.Item`\" pulumi-lang-yaml=\"`scaleway.object.Item`\" pulumi-lang-java=\"`scaleway.object.Item`\"\u003e`scaleway.object.Item`\u003c/span\u003e resource allows you to create and manage objects for [Scaleway Object storage](https://www.scaleway.com/en/docs/object-storage/).\n\nRefer to the [dedicated documentation](https://www.scaleway.com/en/docs/object-storage/how-to/upload-files-into-a-bucket/) for more information on Object Storage objects.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst someBucket = new scaleway.object.Bucket(\"some_bucket\", {name: \"some-unique-name\"});\nconst someFile = new scaleway.object.Item(\"some_file\", {\n    bucket: someBucket.id,\n    key: \"object_path\",\n    file: \"myfile\",\n    hash: std.filemd5({\n        input: \"myfile\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nsome_bucket = scaleway.object.Bucket(\"some_bucket\", name=\"some-unique-name\")\nsome_file = scaleway.object.Item(\"some_file\",\n    bucket=some_bucket.id,\n    key=\"object_path\",\n    file=\"myfile\",\n    hash=std.filemd5(input=\"myfile\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var someBucket = new Scaleway.Object.Bucket(\"some_bucket\", new()\n    {\n        Name = \"some-unique-name\",\n    });\n\n    var someFile = new Scaleway.Object.Item(\"some_file\", new()\n    {\n        Bucket = someBucket.Id,\n        Key = \"object_path\",\n        File = \"myfile\",\n        Hash = Std.Filemd5.Invoke(new()\n        {\n            Input = \"myfile\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsomeBucket, err := object.NewBucket(ctx, \"some_bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"some-unique-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilemd5, err := std.Filemd5(ctx, map[string]interface{}{\n\t\t\t\"input\": \"myfile\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = object.NewItem(ctx, \"some_file\", \u0026object.ItemArgs{\n\t\t\tBucket: someBucket.ID(),\n\t\t\tKey:    pulumi.String(\"object_path\"),\n\t\t\tFile:   pulumi.String(\"myfile\"),\n\t\t\tHash:   invokeFilemd5.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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 someBucket = new Bucket(\"someBucket\", BucketArgs.builder()\n            .name(\"some-unique-name\")\n            .build());\n\n        var someFile = new Item(\"someFile\", ItemArgs.builder()\n            .bucket(someBucket.id())\n            .key(\"object_path\")\n            .file(\"myfile\")\n            .hash(StdFunctions.filemd5(Map.of(\"input\", \"myfile\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  someBucket:\n    type: scaleway:object:Bucket\n    name: some_bucket\n    properties:\n      name: some-unique-name\n  someFile:\n    type: scaleway:object:Item\n    name: some_file\n    properties:\n      bucket: ${someBucket.id}\n      key: object_path\n      file: myfile\n      hash:\n        fn::invoke:\n          function: std:filemd5\n          arguments:\n            input: myfile\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nObjects can be imported using the `{region}/{bucketName}/{objectKey}` identifier, as shown below:\n\n```sh\n$ pulumi import scaleway:index/objectItem:ObjectItem some_object fr-par/some-bucket/some-file\n```\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the project ID at the end of the import command.\n\n```sh\n$ pulumi import scaleway:index/objectItem:ObjectItem some_object fr-par/some-bucket/some-file@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "content": {
                    "type": "string",
                    "description": "The content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                },
                "contentBase64": {
                    "type": "string",
                    "description": "The base64-encoded content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n\n\u003e **Note:** Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "The standard MIME type of the object's content (e.g., 'application/json', 'text/plain'). This specifies how the object should be interpreted by clients. See RFC 9110: \u003chttps://www.rfc-editor.org/rfc/rfc9110.html#name-content-type\u003e\n"
                },
                "file": {
                    "type": "string",
                    "description": "The name of the file to upload, defaults to an empty file.\n"
                },
                "hash": {
                    "type": "string",
                    "description": "Hash of the file, used to trigger the upload on file change.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The path to the object.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of metadata used for the object (keys must be lowercase).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike objects. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region the bucket resides in.\n"
                },
                "sseCustomerKey": {
                    "type": "string",
                    "description": "Customer's encryption keys to encrypt data (SSE-C)\n",
                    "secret": true
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway [storage class](https://www.scaleway.com/en/docs/object-storage/concepts/#storage-class) (`STANDARD`, `GLACIER`, or `ONEZONE_IA`) used to store the object.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags.\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the object, `public-read` or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "bucket",
                "contentType",
                "key",
                "projectId",
                "visibility"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket, or its Terraform ID.\n"
                },
                "content": {
                    "type": "string",
                    "description": "The content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                },
                "contentBase64": {
                    "type": "string",
                    "description": "The base64-encoded content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n\n\u003e **Note:** Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "The standard MIME type of the object's content (e.g., 'application/json', 'text/plain'). This specifies how the object should be interpreted by clients. See RFC 9110: \u003chttps://www.rfc-editor.org/rfc/rfc9110.html#name-content-type\u003e\n"
                },
                "file": {
                    "type": "string",
                    "description": "The name of the file to upload, defaults to an empty file.\n"
                },
                "hash": {
                    "type": "string",
                    "description": "Hash of the file, used to trigger the upload on file change.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The path to the object.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of metadata used for the object (keys must be lowercase).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike objects. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The Scaleway region the bucket resides in.\n",
                    "willReplaceOnChanges": true
                },
                "sseCustomerKey": {
                    "type": "string",
                    "description": "Customer's encryption keys to encrypt data (SSE-C)\n",
                    "secret": true
                },
                "storageClass": {
                    "type": "string",
                    "description": "Specifies the Scaleway [storage class](https://www.scaleway.com/en/docs/object-storage/concepts/#storage-class) (`STANDARD`, `GLACIER`, or `ONEZONE_IA`) used to store the object.\n"
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of tags.\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the object, `public-read` or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "key"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ObjectItem resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket, or its Terraform ID.\n"
                    },
                    "content": {
                        "type": "string",
                        "description": "The content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                    },
                    "contentBase64": {
                        "type": "string",
                        "description": "The base64-encoded content of the file to upload. Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n\n\u003e **Note:** Only one of \u003cspan pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\"\u003e`file`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`contentBase64`\u003c/span\u003e can be defined.\n"
                    },
                    "contentType": {
                        "type": "string",
                        "description": "The standard MIME type of the object's content (e.g., 'application/json', 'text/plain'). This specifies how the object should be interpreted by clients. See RFC 9110: \u003chttps://www.rfc-editor.org/rfc/rfc9110.html#name-content-type\u003e\n"
                    },
                    "file": {
                        "type": "string",
                        "description": "The name of the file to upload, defaults to an empty file.\n"
                    },
                    "hash": {
                        "type": "string",
                        "description": "Hash of the file, used to trigger the upload on file change.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "The path to the object.\n"
                    },
                    "metadata": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of metadata used for the object (keys must be lowercase).\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the bucket is associated with.\n\n\u003e **Important:** The \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e attribute has a particular behavior with s3 products because the s3 API is scoped by project.\nIf you are using a project different from the default one, you have to specify the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e for every child resource of the bucket,\nlike objects. Otherwise, Terraform will try to create the child resource with the default project ID and you will get a 403 error.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The Scaleway region the bucket resides in.\n",
                        "willReplaceOnChanges": true
                    },
                    "sseCustomerKey": {
                        "type": "string",
                        "description": "Customer's encryption keys to encrypt data (SSE-C)\n",
                        "secret": true
                    },
                    "storageClass": {
                        "type": "string",
                        "description": "Specifies the Scaleway [storage class](https://www.scaleway.com/en/docs/object-storage/concepts/#storage-class) (`STANDARD`, `GLACIER`, or `ONEZONE_IA`) used to store the object.\n"
                    },
                    "tags": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of tags.\n"
                    },
                    "visibility": {
                        "type": "string",
                        "description": "Visibility of the object, `public-read` or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/objectitem.ObjectItem has been deprecated in favor of scaleway.object/item.Item"
        },
        "scaleway:index/rdbSnapshot:RdbSnapshot": {
            "description": "Creates and manages Scaleway RDB (Relational Database) Snapshots.\nSnapshots are point-in-time backups of a database instance that can be used for recovery or duplication.\nFor more information, refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).\n\n## Example Usage\n\n### Example Basic Snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.databases.Instance(\"main\", {\n    name: \"test-rdb-instance\",\n    nodeType: \"db-dev-s\",\n    engine: \"PostgreSQL-15\",\n    isHaCluster: false,\n    disableBackup: true,\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_rdb_instance\",\n        \"minimal\",\n    ],\n    volumeType: \"sbs_5k\",\n    volumeSizeInGb: 10,\n});\nconst test = new scaleway.databases.Snapshot(\"test\", {\n    name: \"initial-snapshot\",\n    instanceId: main.id,\n}, {\n    dependsOn: [main],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.databases.Instance(\"main\",\n    name=\"test-rdb-instance\",\n    node_type=\"db-dev-s\",\n    engine=\"PostgreSQL-15\",\n    is_ha_cluster=False,\n    disable_backup=True,\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_rdb_instance\",\n        \"minimal\",\n    ],\n    volume_type=\"sbs_5k\",\n    volume_size_in_gb=10)\ntest = scaleway.databases.Snapshot(\"test\",\n    name=\"initial-snapshot\",\n    instance_id=main.id,\n    opts = pulumi.ResourceOptions(depends_on=[main]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Databases.Instance(\"main\", new()\n    {\n        Name = \"test-rdb-instance\",\n        NodeType = \"db-dev-s\",\n        Engine = \"PostgreSQL-15\",\n        IsHaCluster = false,\n        DisableBackup = true,\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_rdb_instance\",\n            \"minimal\",\n        },\n        VolumeType = \"sbs_5k\",\n        VolumeSizeInGb = 10,\n    });\n\n    var test = new Scaleway.Databases.Snapshot(\"test\", new()\n    {\n        Name = \"initial-snapshot\",\n        InstanceId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := databases.NewInstance(ctx, \"main\", \u0026databases.InstanceArgs{\n\t\t\tName:          pulumi.String(\"test-rdb-instance\"),\n\t\t\tNodeType:      pulumi.String(\"db-dev-s\"),\n\t\t\tEngine:        pulumi.String(\"PostgreSQL-15\"),\n\t\t\tIsHaCluster:   pulumi.Bool(false),\n\t\t\tDisableBackup: pulumi.Bool(true),\n\t\t\tUserName:      pulumi.String(\"my_initial_user\"),\n\t\t\tPassword:      pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_rdb_instance\"),\n\t\t\t\tpulumi.String(\"minimal\"),\n\t\t\t},\n\t\t\tVolumeType:     pulumi.String(\"sbs_5k\"),\n\t\t\tVolumeSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewSnapshot(ctx, \"test\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"initial-snapshot\"),\n\t\t\tInstanceId: main.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\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.scaleway.databases.Instance;\nimport com.pulumi.scaleway.databases.InstanceArgs;\nimport com.pulumi.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Instance(\"main\", InstanceArgs.builder()\n            .name(\"test-rdb-instance\")\n            .nodeType(\"db-dev-s\")\n            .engine(\"PostgreSQL-15\")\n            .isHaCluster(false)\n            .disableBackup(true)\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_rdb_instance\",\n                \"minimal\")\n            .volumeType(\"sbs_5k\")\n            .volumeSizeInGb(10)\n            .build());\n\n        var test = new Snapshot(\"test\", SnapshotArgs.builder()\n            .name(\"initial-snapshot\")\n            .instanceId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:databases:Instance\n    properties:\n      name: test-rdb-instance\n      nodeType: db-dev-s\n      engine: PostgreSQL-15\n      isHaCluster: false\n      disableBackup: true\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - terraform-test\n        - scaleway_rdb_instance\n        - minimal\n      volumeType: sbs_5k\n      volumeSizeInGb: 10\n  test:\n    type: scaleway:databases:Snapshot\n    properties:\n      name: initial-snapshot\n      instanceId: ${main.id}\n    options:\n      dependsOn:\n        - ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Expiration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshotWithExpiration = new scaleway.databases.Snapshot(\"snapshot_with_expiration\", {\n    name: \"snapshot-with-expiration\",\n    instanceId: main.id,\n    expiresAt: \"2025-01-31T00:00:00Z\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsnapshot_with_expiration = scaleway.databases.Snapshot(\"snapshot_with_expiration\",\n    name=\"snapshot-with-expiration\",\n    instance_id=main[\"id\"],\n    expires_at=\"2025-01-31T00:00:00Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshotWithExpiration = new Scaleway.Databases.Snapshot(\"snapshot_with_expiration\", new()\n    {\n        Name = \"snapshot-with-expiration\",\n        InstanceId = main.Id,\n        ExpiresAt = \"2025-01-31T00:00:00Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewSnapshot(ctx, \"snapshot_with_expiration\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot-with-expiration\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t\tExpiresAt:  pulumi.String(\"2025-01-31T00:00:00Z\"),\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.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshotWithExpiration = new Snapshot(\"snapshotWithExpiration\", SnapshotArgs.builder()\n            .name(\"snapshot-with-expiration\")\n            .instanceId(main.id())\n            .expiresAt(\"2025-01-31T00:00:00Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  snapshotWithExpiration:\n    type: scaleway:databases:Snapshot\n    name: snapshot_with_expiration\n    properties:\n      name: snapshot-with-expiration\n      instanceId: ${main.id}\n      expiresAt: 2025-01-31T00:00:00Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Multiple Snapshots\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshotA = new scaleway.databases.Snapshot(\"snapshot_a\", {\n    name: \"snapshot_a\",\n    instanceId: main.id,\n}, {\n    dependsOn: [main],\n});\nconst snapshotB = new scaleway.databases.Snapshot(\"snapshot_b\", {\n    name: \"snapshot_b\",\n    instanceId: main.id,\n    expiresAt: \"2025-02-07T00:00:00Z\",\n}, {\n    dependsOn: [main],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsnapshot_a = scaleway.databases.Snapshot(\"snapshot_a\",\n    name=\"snapshot_a\",\n    instance_id=main[\"id\"],\n    opts = pulumi.ResourceOptions(depends_on=[main]))\nsnapshot_b = scaleway.databases.Snapshot(\"snapshot_b\",\n    name=\"snapshot_b\",\n    instance_id=main[\"id\"],\n    expires_at=\"2025-02-07T00:00:00Z\",\n    opts = pulumi.ResourceOptions(depends_on=[main]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshotA = new Scaleway.Databases.Snapshot(\"snapshot_a\", new()\n    {\n        Name = \"snapshot_a\",\n        InstanceId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n    var snapshotB = new Scaleway.Databases.Snapshot(\"snapshot_b\", new()\n    {\n        Name = \"snapshot_b\",\n        InstanceId = main.Id,\n        ExpiresAt = \"2025-02-07T00:00:00Z\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            main,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewSnapshot(ctx, \"snapshot_a\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot_a\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databases.NewSnapshot(ctx, \"snapshot_b\", \u0026databases.SnapshotArgs{\n\t\t\tName:       pulumi.String(\"snapshot_b\"),\n\t\t\tInstanceId: pulumi.Any(main.Id),\n\t\t\tExpiresAt:  pulumi.String(\"2025-02-07T00:00:00Z\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmain,\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.scaleway.databases.Snapshot;\nimport com.pulumi.scaleway.databases.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshotA = new Snapshot(\"snapshotA\", SnapshotArgs.builder()\n            .name(\"snapshot_a\")\n            .instanceId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n        var snapshotB = new Snapshot(\"snapshotB\", SnapshotArgs.builder()\n            .name(\"snapshot_b\")\n            .instanceId(main.id())\n            .expiresAt(\"2025-02-07T00:00:00Z\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(main)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  snapshotA:\n    type: scaleway:databases:Snapshot\n    name: snapshot_a\n    properties:\n      name: snapshot_a\n      instanceId: ${main.id}\n    options:\n      dependsOn:\n        - ${main}\n  snapshotB:\n    type: scaleway:databases:Snapshot\n    name: snapshot_b\n    properties:\n      name: snapshot_b\n      instanceId: ${main.id}\n      expiresAt: 2025-02-07T00:00:00Z\n    options:\n      dependsOn:\n        - ${main}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Limitations\n\n- Snapshots are tied to the database instance and region where they are created.\n- Expired snapshots are automatically deleted and cannot be restored.\n\n## Notes\n\n- Ensure the \u003cspan pulumi-lang-nodejs=\"`instanceId`\" pulumi-lang-dotnet=\"`InstanceId`\" pulumi-lang-go=\"`instanceId`\" pulumi-lang-python=\"`instance_id`\" pulumi-lang-yaml=\"`instanceId`\" pulumi-lang-java=\"`instanceId`\"\u003e`instanceId`\u003c/span\u003e corresponds to an existing database instance.\n- Use 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 argument when creating snapshots right after creating an instance to ensure proper dependency management.\n\n## Import\n\nRDB Snapshots can be imported using the `{region}/{snapshot_id}` format.\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The timestamp when the snapshot was created, in ISO 8601 format.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The UUID of the database instance for which the snapshot is created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of the database instance for which the snapshot was created.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the snapshot in bytes.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the snapshot (e.g., \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The timestamp when the snapshot was last updated, in ISO 8601 format.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "The type of volume used by the snapshot.\n"
                }
            },
            "required": [
                "createdAt",
                "expiresAt",
                "instanceId",
                "name",
                "nodeType",
                "size",
                "status",
                "updatedAt",
                "volumeType"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "string",
                    "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "The UUID of the database instance for which the snapshot is created.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "instanceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RdbSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The timestamp when the snapshot was created, in ISO 8601 format.\n"
                    },
                    "expiresAt": {
                        "type": "string",
                        "description": "Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.\n"
                    },
                    "instanceId": {
                        "type": "string",
                        "description": "The UUID of the database instance for which the snapshot is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of the database instance for which the snapshot was created.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the snapshot is stored. Defaults to the region set in the provider configuration.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the snapshot in bytes.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the snapshot (e.g., \u003cspan pulumi-lang-nodejs=\"`ready`\" pulumi-lang-dotnet=\"`Ready`\" pulumi-lang-go=\"`ready`\" pulumi-lang-python=\"`ready`\" pulumi-lang-yaml=\"`ready`\" pulumi-lang-java=\"`ready`\"\u003e`ready`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e).\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The timestamp when the snapshot was last updated, in ISO 8601 format.\n"
                    },
                    "volumeType": {
                        "type": "string",
                        "description": "The type of volume used by the snapshot.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/rdbsnapshot.RdbSnapshot has been deprecated in favor of scaleway.databases/snapshot.Snapshot"
        },
        "scaleway:index/redisCluster:RedisCluster": {
            "description": "Creates and manages Scaleway Redis™ clusters.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/managed-database-redis).\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using 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 write-only argument instead of the regular \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 argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic Redis cluster creation\nconst main = new scaleway.redis.Cluster(\"main\", {\n    name: \"test_redis_basic\",\n    version: \"6.2.7\",\n    nodeType: \"RED1-MICRO\",\n    userName: \"my_initial_user\",\n    password: \"thiZ_is_v\u0026ry_s3cret\",\n    tags: [\n        \"test\",\n        \"redis\",\n    ],\n    clusterSize: 1,\n    tlsEnabled: true,\n    acls: [{\n        ip: \"0.0.0.0/0\",\n        description: \"Allow all\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Basic Redis cluster creation\nmain = scaleway.redis.Cluster(\"main\",\n    name=\"test_redis_basic\",\n    version=\"6.2.7\",\n    node_type=\"RED1-MICRO\",\n    user_name=\"my_initial_user\",\n    password=\"thiZ_is_v\u0026ry_s3cret\",\n    tags=[\n        \"test\",\n        \"redis\",\n    ],\n    cluster_size=1,\n    tls_enabled=True,\n    acls=[{\n        \"ip\": \"0.0.0.0/0\",\n        \"description\": \"Allow all\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic Redis cluster creation\n    var main = new Scaleway.Redis.Cluster(\"main\", new()\n    {\n        Name = \"test_redis_basic\",\n        Version = \"6.2.7\",\n        NodeType = \"RED1-MICRO\",\n        UserName = \"my_initial_user\",\n        Password = \"thiZ_is_v\u0026ry_s3cret\",\n        Tags = new[]\n        {\n            \"test\",\n            \"redis\",\n        },\n        ClusterSize = 1,\n        TlsEnabled = true,\n        Acls = new[]\n        {\n            new Scaleway.Redis.Inputs.ClusterAclArgs\n            {\n                Ip = \"0.0.0.0/0\",\n                Description = \"Allow all\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/redis\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic Redis cluster creation\n\t\t_, err := redis.NewCluster(ctx, \"main\", \u0026redis.ClusterArgs{\n\t\t\tName:     pulumi.String(\"test_redis_basic\"),\n\t\t\tVersion:  pulumi.String(\"6.2.7\"),\n\t\t\tNodeType: pulumi.String(\"RED1-MICRO\"),\n\t\t\tUserName: pulumi.String(\"my_initial_user\"),\n\t\t\tPassword: pulumi.String(\"thiZ_is_v\u0026ry_s3cret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\tpulumi.String(\"redis\"),\n\t\t\t},\n\t\t\tClusterSize: pulumi.Int(1),\n\t\t\tTlsEnabled:  pulumi.Bool(true),\n\t\t\tAcls: redis.ClusterAclArray{\n\t\t\t\t\u0026redis.ClusterAclArgs{\n\t\t\t\t\tIp:          pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\tDescription: pulumi.String(\"Allow all\"),\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.scaleway.redis.Cluster;\nimport com.pulumi.scaleway.redis.ClusterArgs;\nimport com.pulumi.scaleway.redis.inputs.ClusterAclArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 Redis cluster creation\n        var main = new Cluster(\"main\", ClusterArgs.builder()\n            .name(\"test_redis_basic\")\n            .version(\"6.2.7\")\n            .nodeType(\"RED1-MICRO\")\n            .userName(\"my_initial_user\")\n            .password(\"thiZ_is_v\u0026ry_s3cret\")\n            .tags(            \n                \"test\",\n                \"redis\")\n            .clusterSize(1)\n            .tlsEnabled(true)\n            .acls(ClusterAclArgs.builder()\n                .ip(\"0.0.0.0/0\")\n                .description(\"Allow all\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic Redis cluster creation\n  main:\n    type: scaleway:redis:Cluster\n    properties:\n      name: test_redis_basic\n      version: 6.2.7\n      nodeType: RED1-MICRO\n      userName: my_initial_user\n      password: thiZ_is_v\u0026ry_s3cret\n      tags:\n        - test\n        - redis\n      clusterSize: 1\n      tlsEnabled: 'true'\n      acls:\n        - ip: 0.0.0.0/0\n          description: Allow all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRedis™ cluster can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/redisCluster:RedisCluster main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterAcl:RedisClusterAcl"
                    },
                    "description": "List of acl rules, this is cluster's authorized IPs. More details on the ACL section.\n"
                },
                "certificate": {
                    "type": "string",
                    "description": "The PEM of the certificate used by redis, only when \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tlsEnabled`\u003c/span\u003e is true\n"
                },
                "clusterSize": {
                    "type": "integer",
                    "description": "The number of nodes in the Redis™ cluster.\n\n\u003e **Important:**\n\n- Cluster_size = 1 for Standalone mode (single node).\n\n- Cluster_size = 2 for High Availability (HA) mode, with 1 main node and 1 standby node.\n\n- Cluster_size \u003e= 3 for Cluster mode, which requires a minimum of 1 main node and 2 secondary nodes.\n\n\u003e **Important:** If you are using the cluster mode (\u003e=3 nodes), you can set a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e than you initially\ndid, it will migrate the Redis™ cluster but keep in mind that you cannot downgrade a Redis™ cluster, so setting a smaller\n\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and recreate your cluster.\n\n\u003e **Important:** If you are using the Standalone mode (1 node), setting a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and\nrecreate your cluster as you will be switching to the cluster mode.\n"
                },
                "connectionString": {
                    "type": "string",
                    "description": "Redis connection URI for the first reachable endpoint (public is preferred over private). Uses scheme \u003cspan pulumi-lang-nodejs=\"`rediss`\" pulumi-lang-dotnet=\"`Rediss`\" pulumi-lang-go=\"`rediss`\" pulumi-lang-python=\"`rediss`\" pulumi-lang-yaml=\"`rediss`\" pulumi-lang-java=\"`rediss`\"\u003e`rediss`\u003c/span\u003e when TLS is enabled. Database index is always \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. When a password is available in state, userinfo includes \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e and the password (Redis ACL). When \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 used, the password is omitted because it is not stored in state.",
                    "secret": true
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of creation of the Redis™ cluster.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Redis™ cluster.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Redis™ cluster you want to create (e.g. `RED1-M`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e. Keep in mind that\nyou cannot downgrade a Redis™ cluster.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Redis™ cluster. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Redis™ cluster in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterPrivateIp:RedisClusterPrivateIp"
                    },
                    "description": "The list of private IPv4 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterPrivateNetwork:RedisClusterPrivateNetwork"
                    },
                    "description": "Describes the Private Network you want to connect to your cluster. If not set, a public\nnetwork will be provided. More details on the Private Network section\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Redis™ cluster is\nassociated with.\n"
                },
                "publicNetwork": {
                    "$ref": "#/types/scaleway:index/RedisClusterPublicNetwork:RedisClusterPublicNetwork",
                    "description": "(Optional) Public network details. Only one of \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e may be set.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e block exports:\n"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of settings for Redis™ cluster. Available settings can be found by listing Redis™ versions\nwith scaleway API or CLI\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Redis™ cluster.\n"
                },
                "tlsEnabled": {
                    "type": "boolean",
                    "description": "Whether TLS is enabled or not.\n\n\u003e The changes on \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tlsEnabled`\u003c/span\u003e will force the resource creation.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Redis™ cluster.\n"
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Redis™ cluster.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Redis™ cluster's version (e.g. `6.2.7`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e. Keep in mind that you\ncannot downgrade a Redis™ cluster.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the\nRedis™ cluster should be created.\n"
                }
            },
            "required": [
                "certificate",
                "clusterSize",
                "connectionString",
                "createdAt",
                "name",
                "nodeType",
                "privateIps",
                "projectId",
                "publicNetwork",
                "updatedAt",
                "userName",
                "version"
            ],
            "inputProperties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterAcl:RedisClusterAcl"
                    },
                    "description": "List of acl rules, this is cluster's authorized IPs. More details on the ACL section.\n"
                },
                "clusterSize": {
                    "type": "integer",
                    "description": "The number of nodes in the Redis™ cluster.\n\n\u003e **Important:**\n\n- Cluster_size = 1 for Standalone mode (single node).\n\n- Cluster_size = 2 for High Availability (HA) mode, with 1 main node and 1 standby node.\n\n- Cluster_size \u003e= 3 for Cluster mode, which requires a minimum of 1 main node and 2 secondary nodes.\n\n\u003e **Important:** If you are using the cluster mode (\u003e=3 nodes), you can set a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e than you initially\ndid, it will migrate the Redis™ cluster but keep in mind that you cannot downgrade a Redis™ cluster, so setting a smaller\n\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and recreate your cluster.\n\n\u003e **Important:** If you are using the Standalone mode (1 node), setting a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and\nrecreate your cluster as you will be switching to the cluster mode.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Redis™ cluster.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Redis™ cluster you want to create (e.g. `RED1-M`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e. Keep in mind that\nyou cannot downgrade a Redis™ cluster.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the first user of the Redis™ cluster. Only one 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 or \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 should be specified.\n",
                    "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.\nPassword for the first user of the Redis™ cluster in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterPrivateIp:RedisClusterPrivateIp"
                    },
                    "description": "The list of private IPv4 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/RedisClusterPrivateNetwork:RedisClusterPrivateNetwork"
                    },
                    "description": "Describes the Private Network you want to connect to your cluster. If not set, a public\nnetwork will be provided. More details on the Private Network section\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Redis™ cluster is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicNetwork": {
                    "$ref": "#/types/scaleway:index/RedisClusterPublicNetwork:RedisClusterPublicNetwork",
                    "description": "(Optional) Public network details. Only one of \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e may be set.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e block exports:\n"
                },
                "settings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of settings for Redis™ cluster. Available settings can be found by listing Redis™ versions\nwith scaleway API or CLI\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Redis™ cluster.\n"
                },
                "tlsEnabled": {
                    "type": "boolean",
                    "description": "Whether TLS is enabled or not.\n\n\u003e The changes on \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tlsEnabled`\u003c/span\u003e will force the resource creation.\n",
                    "willReplaceOnChanges": true
                },
                "userName": {
                    "type": "string",
                    "description": "Identifier for the first user of the Redis™ cluster.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Redis™ cluster's version (e.g. `6.2.7`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e. Keep in mind that you\ncannot downgrade a Redis™ cluster.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the\nRedis™ cluster should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "nodeType",
                "userName",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RedisCluster resources.\n",
                "properties": {
                    "acls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/RedisClusterAcl:RedisClusterAcl"
                        },
                        "description": "List of acl rules, this is cluster's authorized IPs. More details on the ACL section.\n"
                    },
                    "certificate": {
                        "type": "string",
                        "description": "The PEM of the certificate used by redis, only when \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tlsEnabled`\u003c/span\u003e is true\n"
                    },
                    "clusterSize": {
                        "type": "integer",
                        "description": "The number of nodes in the Redis™ cluster.\n\n\u003e **Important:**\n\n- Cluster_size = 1 for Standalone mode (single node).\n\n- Cluster_size = 2 for High Availability (HA) mode, with 1 main node and 1 standby node.\n\n- Cluster_size \u003e= 3 for Cluster mode, which requires a minimum of 1 main node and 2 secondary nodes.\n\n\u003e **Important:** If you are using the cluster mode (\u003e=3 nodes), you can set a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e than you initially\ndid, it will migrate the Redis™ cluster but keep in mind that you cannot downgrade a Redis™ cluster, so setting a smaller\n\u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and recreate your cluster.\n\n\u003e **Important:** If you are using the Standalone mode (1 node), setting a bigger \u003cspan pulumi-lang-nodejs=\"`clusterSize`\" pulumi-lang-dotnet=\"`ClusterSize`\" pulumi-lang-go=\"`clusterSize`\" pulumi-lang-python=\"`cluster_size`\" pulumi-lang-yaml=\"`clusterSize`\" pulumi-lang-java=\"`clusterSize`\"\u003e`clusterSize`\u003c/span\u003e will destroy and\nrecreate your cluster as you will be switching to the cluster mode.\n"
                    },
                    "connectionString": {
                        "type": "string",
                        "description": "Redis connection URI for the first reachable endpoint (public is preferred over private). Uses scheme \u003cspan pulumi-lang-nodejs=\"`rediss`\" pulumi-lang-dotnet=\"`Rediss`\" pulumi-lang-go=\"`rediss`\" pulumi-lang-python=\"`rediss`\" pulumi-lang-yaml=\"`rediss`\" pulumi-lang-java=\"`rediss`\"\u003e`rediss`\u003c/span\u003e when TLS is enabled. Database index is always \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. When a password is available in state, userinfo includes \u003cspan pulumi-lang-nodejs=\"`userName`\" pulumi-lang-dotnet=\"`UserName`\" pulumi-lang-go=\"`userName`\" pulumi-lang-python=\"`user_name`\" pulumi-lang-yaml=\"`userName`\" pulumi-lang-java=\"`userName`\"\u003e`userName`\u003c/span\u003e and the password (Redis ACL). When \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 used, the password is omitted because it is not stored in state.",
                        "secret": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of creation of the Redis™ cluster.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Redis™ cluster.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The type of Redis™ cluster you want to create (e.g. `RED1-M`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`nodeType`\" pulumi-lang-dotnet=\"`NodeType`\" pulumi-lang-go=\"`nodeType`\" pulumi-lang-python=\"`node_type`\" pulumi-lang-yaml=\"`nodeType`\" pulumi-lang-java=\"`nodeType`\"\u003e`nodeType`\u003c/span\u003e. Keep in mind that\nyou cannot downgrade a Redis™ cluster.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the first user of the Redis™ cluster. Only one 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 or \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 should be specified.\n",
                        "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.\nPassword for the first user of the Redis™ cluster in write-only mode. Only one 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 or \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 should be specified. \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 will not be set in the Terraform state. To update 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, you must also update the \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.\n",
                        "secret": true
                    },
                    "passwordWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only password. To update 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, you must also update the \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.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/RedisClusterPrivateIp:RedisClusterPrivateIp"
                        },
                        "description": "The list of private IPv4 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/RedisClusterPrivateNetwork:RedisClusterPrivateNetwork"
                        },
                        "description": "Describes the Private Network you want to connect to your cluster. If not set, a public\nnetwork will be provided. More details on the Private Network section\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the Redis™ cluster is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicNetwork": {
                        "$ref": "#/types/scaleway:index/RedisClusterPublicNetwork:RedisClusterPublicNetwork",
                        "description": "(Optional) Public network details. Only one of \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e may be set.\n\u003e The \u003cspan pulumi-lang-nodejs=\"`publicNetwork`\" pulumi-lang-dotnet=\"`PublicNetwork`\" pulumi-lang-go=\"`publicNetwork`\" pulumi-lang-python=\"`public_network`\" pulumi-lang-yaml=\"`publicNetwork`\" pulumi-lang-java=\"`publicNetwork`\"\u003e`publicNetwork`\u003c/span\u003e block exports:\n"
                    },
                    "settings": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Map of settings for Redis™ cluster. Available settings can be found by listing Redis™ versions\nwith scaleway API or CLI\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Redis™ cluster.\n"
                    },
                    "tlsEnabled": {
                        "type": "boolean",
                        "description": "Whether TLS is enabled or not.\n\n\u003e The changes on \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tlsEnabled`\u003c/span\u003e will force the resource creation.\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Redis™ cluster.\n"
                    },
                    "userName": {
                        "type": "string",
                        "description": "Identifier for the first user of the Redis™ cluster.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "Redis™ cluster's version (e.g. `6.2.7`).\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e will migrate the Redis™ cluster to the desired \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e. Keep in mind that you\ncannot downgrade a Redis™ cluster.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the\nRedis™ cluster should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/rediscluster.RedisCluster has been deprecated in favor of scaleway.redis/cluster.Cluster"
        },
        "scaleway:index/registryNamespace:RegistryNamespace": {
            "description": "Creates and manages Scaleway Container Registry.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/registry).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.registry.Namespace(\"main\", {\n    name: \"main-cr\",\n    description: \"Main container registry\",\n    isPublic: false,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.registry.Namespace(\"main\",\n    name=\"main-cr\",\n    description=\"Main container registry\",\n    is_public=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Registry.Namespace(\"main\", new()\n    {\n        Name = \"main-cr\",\n        Description = \"Main container registry\",\n        IsPublic = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/registry\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := registry.NewNamespace(ctx, \"main\", \u0026registry.NamespaceArgs{\n\t\t\tName:        pulumi.String(\"main-cr\"),\n\t\t\tDescription: pulumi.String(\"Main container registry\"),\n\t\t\tIsPublic:    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.pulumi.scaleway.registry.Namespace;\nimport com.pulumi.scaleway.registry.NamespaceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Namespace(\"main\", NamespaceArgs.builder()\n            .name(\"main-cr\")\n            .description(\"Main container registry\")\n            .isPublic(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:registry:Namespace\n    properties:\n      name: main-cr\n      description: Main container registry\n      isPublic: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNamespaces can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/registryNamespace:RegistryNamespace main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint reachable by Docker.\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Whether the images stored in the namespace should be downloadable publicly (docker pull).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the namespace.\n\n\u003e **Important** Updates to \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 recreate the namespace.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the namespace is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the namespace is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n"
                }
            },
            "required": [
                "endpoint",
                "name",
                "organizationId",
                "projectId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the namespace.\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Whether the images stored in the namespace should be downloadable publicly (docker pull).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The unique name of the namespace.\n\n\u003e **Important** Updates to \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 recreate the namespace.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the namespace is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the namespace should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RegistryNamespace resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the namespace.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "Endpoint reachable by Docker.\n"
                    },
                    "isPublic": {
                        "type": "boolean",
                        "description": "Whether the images stored in the namespace should be downloadable publicly (docker pull).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The unique name of the namespace.\n\n\u003e **Important** Updates to \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 recreate the namespace.\n",
                        "willReplaceOnChanges": true
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the namespace is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the namespace is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the namespace should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/registrynamespace.RegistryNamespace has been deprecated in favor of scaleway.registry/namespace.Namespace"
        },
        "scaleway:index/sdbDatabase:SdbDatabase": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-dotnet=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-go=\"`databases.ServerlessDatabase`\" pulumi-lang-python=\"`databases.ServerlessDatabase`\" pulumi-lang-yaml=\"`scaleway.databases.ServerlessDatabase`\" pulumi-lang-java=\"`scaleway.databases.ServerlessDatabase`\"\u003e`scaleway.databases.ServerlessDatabase`\u003c/span\u003e resource allows you to create and manage databases for Scaleway Serverless SQL Databases.\n\nRefer to the Serverless SQL Databases [documentation](https://www.scaleway.com/en/docs/serverless-sql-databases/) and [API documentation](https://www.scaleway.com/en/developers/api/serverless-databases/) for more information.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst database = new scaleway.databases.ServerlessDatabase(\"database\", {\n    name: \"my-database\",\n    minCpu: 0,\n    maxCpu: 8,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndatabase = scaleway.databases.ServerlessDatabase(\"database\",\n    name=\"my-database\",\n    min_cpu=0,\n    max_cpu=8)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var database = new Scaleway.Databases.ServerlessDatabase(\"database\", new()\n    {\n        Name = \"my-database\",\n        MinCpu = 0,\n        MaxCpu = 8,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databases.NewServerlessDatabase(ctx, \"database\", \u0026databases.ServerlessDatabaseArgs{\n\t\t\tName:   pulumi.String(\"my-database\"),\n\t\t\tMinCpu: pulumi.Int(0),\n\t\t\tMaxCpu: pulumi.Int(8),\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.scaleway.databases.ServerlessDatabase;\nimport com.pulumi.scaleway.databases.ServerlessDatabaseArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 database = new ServerlessDatabase(\"database\", ServerlessDatabaseArgs.builder()\n            .name(\"my-database\")\n            .minCpu(0)\n            .maxCpu(8)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  database:\n    type: scaleway:databases:ServerlessDatabase\n    properties:\n      name: my-database\n      minCpu: 0\n      maxCpu: 8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IAM Application\n\nThis example creates an [IAM application](https://www.scaleway.com/en/docs/iam/concepts/#application) and an [API secret key](https://www.scaleway.com/en/docs/iam/how-to/create-api-keys/) used to connect to the database.\n\n\u003e **Note:** For more information, see [How to connect to a Serverless SQL Database](https://www.scaleway.com/en/docs/serverless-sql-databases/how-to/connect-to-a-database/)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = scaleway.account.getProject({\n    name: \"default\",\n});\nconst app = new scaleway.iam.Application(\"app\", {name: \"my app\"});\nconst dbAccess = new scaleway.iam.Policy(\"db_access\", {\n    name: \"my policy\",\n    description: \"gives app access to serverless database in project\",\n    applicationId: app.id,\n    rules: [{\n        projectIds: [_default.then(_default =\u003e _default.id)],\n        permissionSetNames: [\"ServerlessSQLDatabaseReadWrite\"],\n    }],\n});\nconst apiKey = new scaleway.iam.ApiKey(\"api_key\", {applicationId: app.id});\nconst database = new scaleway.databases.ServerlessDatabase(\"database\", {\n    name: \"my-database\",\n    minCpu: 0,\n    maxCpu: 8,\n});\nexport const databaseConnectionString = std.format({\n    input: \"postgres://%s:%s@%s\",\n    args: [\n        app.id,\n        apiKey.secretKey,\n        std.trimprefix({\n            input: database.endpoint,\n            prefix: \"postgres://\",\n        }).result,\n    ],\n}).result;\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\ndefault = scaleway.account.get_project(name=\"default\")\napp = scaleway.iam.Application(\"app\", name=\"my app\")\ndb_access = scaleway.iam.Policy(\"db_access\",\n    name=\"my policy\",\n    description=\"gives app access to serverless database in project\",\n    application_id=app.id,\n    rules=[{\n        \"project_ids\": [default.id],\n        \"permission_set_names\": [\"ServerlessSQLDatabaseReadWrite\"],\n    }])\napi_key = scaleway.iam.ApiKey(\"api_key\", application_id=app.id)\ndatabase = scaleway.databases.ServerlessDatabase(\"database\",\n    name=\"my-database\",\n    min_cpu=0,\n    max_cpu=8)\npulumi.export(\"databaseConnectionString\", std.format(input=\"postgres://%s:%s@%s\",\n    args=[\n        app.id,\n        api_key.secret_key,\n        std.trimprefix(input=database.endpoint,\n            prefix=\"postgres://\")[\"result\"],\n    ])[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = Scaleway.Account.GetProject.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var app = new Scaleway.Iam.Application(\"app\", new()\n    {\n        Name = \"my app\",\n    });\n\n    var dbAccess = new Scaleway.Iam.Policy(\"db_access\", new()\n    {\n        Name = \"my policy\",\n        Description = \"gives app access to serverless database in project\",\n        ApplicationId = app.Id,\n        Rules = new[]\n        {\n            new Scaleway.Iam.Inputs.PolicyRuleArgs\n            {\n                ProjectIds = new[]\n                {\n                    @default.Apply(@default =\u003e @default.Apply(getProjectResult =\u003e getProjectResult.Id)),\n                },\n                PermissionSetNames = new[]\n                {\n                    \"ServerlessSQLDatabaseReadWrite\",\n                },\n            },\n        },\n    });\n\n    var apiKey = new Scaleway.Iam.ApiKey(\"api_key\", new()\n    {\n        ApplicationId = app.Id,\n    });\n\n    var database = new Scaleway.Databases.ServerlessDatabase(\"database\", new()\n    {\n        Name = \"my-database\",\n        MinCpu = 0,\n        MaxCpu = 8,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseConnectionString\"] = Std.Format.Invoke(new()\n        {\n            Input = \"postgres://%s:%s@%s\",\n            Args = new[]\n            {\n                app.Id,\n                apiKey.SecretKey,\n                Std.Trimprefix.Invoke(new()\n                {\n                    Input = database.Endpoint,\n                    Prefix = \"postgres://\",\n                }).Result,\n            },\n        }).Result,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/account\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/databases\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := account.LookupProject(ctx, \u0026account.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapp, err := iam.NewApplication(ctx, \"app\", \u0026iam.ApplicationArgs{\n\t\t\tName: pulumi.String(\"my app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewPolicy(ctx, \"db_access\", \u0026iam.PolicyArgs{\n\t\t\tName:          pulumi.String(\"my policy\"),\n\t\t\tDescription:   pulumi.String(\"gives app access to serverless database in project\"),\n\t\t\tApplicationId: app.ID(),\n\t\t\tRules: iam.PolicyRuleArray{\n\t\t\t\t\u0026iam.PolicyRuleArgs{\n\t\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(_default.Id),\n\t\t\t\t\t},\n\t\t\t\t\tPermissionSetNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ServerlessSQLDatabaseReadWrite\"),\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\tapiKey, err := iam.NewApiKey(ctx, \"api_key\", \u0026iam.ApiKeyArgs{\n\t\t\tApplicationId: app.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := databases.NewServerlessDatabase(ctx, \"database\", \u0026databases.ServerlessDatabaseArgs{\n\t\t\tName:   pulumi.String(\"my-database\"),\n\t\t\tMinCpu: pulumi.Int(0),\n\t\t\tMaxCpu: pulumi.Int(8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseConnectionString\", pulumi.Any(std.Format(ctx, map[string]interface{}{\n\t\t\t\"input\": \"postgres://%s:%s@%s\",\n\t\t\t\"args\": []interface{}{\n\t\t\t\tapp.ID(),\n\t\t\t\tapiKey.SecretKey,\n\t\t\t\tstd.Trimprefix(ctx, map[string]interface{}{\n\t\t\t\t\t\"input\":  database.Endpoint,\n\t\t\t\t\t\"prefix\": \"postgres://\",\n\t\t\t\t}, nil).Result,\n\t\t\t},\n\t\t}, nil).Result))\n\t\treturn nil\n\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.scaleway.account.AccountFunctions;\nimport com.pulumi.scaleway.account.inputs.GetProjectArgs;\nimport com.pulumi.scaleway.iam.Application;\nimport com.pulumi.scaleway.iam.ApplicationArgs;\nimport com.pulumi.scaleway.iam.Policy;\nimport com.pulumi.scaleway.iam.PolicyArgs;\nimport com.pulumi.scaleway.iam.inputs.PolicyRuleArgs;\nimport com.pulumi.scaleway.iam.ApiKey;\nimport com.pulumi.scaleway.iam.ApiKeyArgs;\nimport com.pulumi.scaleway.databases.ServerlessDatabase;\nimport com.pulumi.scaleway.databases.ServerlessDatabaseArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 default = AccountFunctions.getProject(GetProjectArgs.builder()\n            .name(\"default\")\n            .build());\n\n        var app = new Application(\"app\", ApplicationArgs.builder()\n            .name(\"my app\")\n            .build());\n\n        var dbAccess = new Policy(\"dbAccess\", PolicyArgs.builder()\n            .name(\"my policy\")\n            .description(\"gives app access to serverless database in project\")\n            .applicationId(app.id())\n            .rules(PolicyRuleArgs.builder()\n                .projectIds(default_.id())\n                .permissionSetNames(\"ServerlessSQLDatabaseReadWrite\")\n                .build())\n            .build());\n\n        var apiKey = new ApiKey(\"apiKey\", ApiKeyArgs.builder()\n            .applicationId(app.id())\n            .build());\n\n        var database = new ServerlessDatabase(\"database\", ServerlessDatabaseArgs.builder()\n            .name(\"my-database\")\n            .minCpu(0)\n            .maxCpu(8)\n            .build());\n\n        ctx.export(\"databaseConnectionString\", StdFunctions.format(Map.ofEntries(\n            Map.entry(\"input\", \"postgres://%s:%s@%s\"),\n            Map.entry(\"args\", Arrays.asList(            \n                app.id(),\n                apiKey.secretKey(),\n                StdFunctions.trimprefix(Map.ofEntries(\n                    Map.entry(\"input\", database.endpoint()),\n                    Map.entry(\"prefix\", \"postgres://\")\n                )).result()))\n        )).result());\n    }\n}\n```\n```yaml\nresources:\n  app:\n    type: scaleway:iam:Application\n    properties:\n      name: my app\n  dbAccess:\n    type: scaleway:iam:Policy\n    name: db_access\n    properties:\n      name: my policy\n      description: gives app access to serverless database in project\n      applicationId: ${app.id}\n      rules:\n        - projectIds:\n            - ${default.id}\n          permissionSetNames:\n            - ServerlessSQLDatabaseReadWrite\n  apiKey:\n    type: scaleway:iam:ApiKey\n    name: api_key\n    properties:\n      applicationId: ${app.id}\n  database:\n    type: scaleway:databases:ServerlessDatabase\n    properties:\n      name: my-database\n      minCpu: 0\n      maxCpu: 8\nvariables:\n  default:\n    fn::invoke:\n      function: scaleway:account:getProject\n      arguments:\n        name: default\noutputs:\n  databaseConnectionString:\n    fn::invoke:\n      function: std:format\n      arguments:\n        input: postgres://%s:%s@%s\n        args:\n          - ${app.id}\n          - ${apiKey.secretKey}\n          - fn::invoke:\n              function: std:trimprefix\n              arguments:\n                input: ${database.endpoint}\n                prefix: postgres://\n              return: result\n      return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerless SQL Databases can be imported using the `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:index/sdbDatabase:SdbDatabase database fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The endpoint of the database.\n"
                },
                "maxCpu": {
                    "type": "integer",
                    "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                },
                "minCpu": {
                    "type": "integer",
                    "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n"
                }
            },
            "required": [
                "endpoint",
                "name",
                "projectId"
            ],
            "inputProperties": {
                "maxCpu": {
                    "type": "integer",
                    "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                },
                "minCpu": {
                    "type": "integer",
                    "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the resource exists.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SdbDatabase resources.\n",
                "properties": {
                    "endpoint": {
                        "type": "string",
                        "description": "The endpoint of the database.\n"
                    },
                    "maxCpu": {
                        "type": "integer",
                        "description": "The maximum number of CPU units for your database. Defaults to 15.\n"
                    },
                    "minCpu": {
                        "type": "integer",
                        "description": "The minimum number of CPU units for your database. Defaults to 0.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the database (e.g. `my-new-database`).\n\n\u003e **Important:** Updates to 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 will recreate the database.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e projectId \u003c/span\u003eyou want to attach the resource to",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the resource exists.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/sdbdatabase.SdbDatabase has been deprecated in favor of scaleway.databases/serverlessdatabase.ServerlessDatabase"
        },
        "scaleway:index/secret:Secret": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.secrets.Secret`\" pulumi-lang-dotnet=\"`scaleway.secrets.Secret`\" pulumi-lang-go=\"`secrets.Secret`\" pulumi-lang-python=\"`secrets.Secret`\" pulumi-lang-yaml=\"`scaleway.secrets.Secret`\" pulumi-lang-java=\"`scaleway.secrets.Secret`\"\u003e`scaleway.secrets.Secret`\u003c/span\u003e resource allows you to create and manage secrets in Scaleway Secret Manager.\n\nRefer to the Secret Manager [product documentation](https://www.scaleway.com/en/docs/secret-manager/) and [API documentation](https://www.scaleway.com/en/developers/api/secret-manager/) for more information.\n\n## Example Usage\n\n### Create a secret\n\nThe following command allows you to create a secret named \u003cspan pulumi-lang-nodejs=\"`foo`\" pulumi-lang-dotnet=\"`Foo`\" pulumi-lang-go=\"`foo`\" pulumi-lang-python=\"`foo`\" pulumi-lang-yaml=\"`foo`\" pulumi-lang-java=\"`foo`\"\u003e`foo`\u003c/span\u003e with a description (\u003cspan pulumi-lang-nodejs=\"`barr`\" pulumi-lang-dotnet=\"`Barr`\" pulumi-lang-go=\"`barr`\" pulumi-lang-python=\"`barr`\" pulumi-lang-yaml=\"`barr`\" pulumi-lang-java=\"`barr`\"\u003e`barr`\u003c/span\u003e), and tags (\u003cspan pulumi-lang-nodejs=\"`foo`\" pulumi-lang-dotnet=\"`Foo`\" pulumi-lang-go=\"`foo`\" pulumi-lang-python=\"`foo`\" pulumi-lang-yaml=\"`foo`\" pulumi-lang-java=\"`foo`\"\u003e`foo`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`terraform`\" pulumi-lang-dotnet=\"`Terraform`\" pulumi-lang-go=\"`terraform`\" pulumi-lang-python=\"`terraform`\" pulumi-lang-yaml=\"`terraform`\" pulumi-lang-java=\"`terraform`\"\u003e`terraform`\u003c/span\u003e).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.secrets.Secret(\"main\", {\n    name: \"foo\",\n    description: \"barr\",\n    tags: [\n        \"foo\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.secrets.Secret(\"main\",\n    name=\"foo\",\n    description=\"barr\",\n    tags=[\n        \"foo\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Secrets.Secret(\"main\", new()\n    {\n        Name = \"foo\",\n        Description = \"barr\",\n        Tags = new[]\n        {\n            \"foo\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/secrets\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secrets.NewSecret(ctx, \"main\", \u0026secrets.SecretArgs{\n\t\t\tName:        pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"barr\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.secrets.Secret;\nimport com.pulumi.scaleway.secrets.SecretArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Secret(\"main\", SecretArgs.builder()\n            .name(\"foo\")\n            .description(\"barr\")\n            .tags(            \n                \"foo\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:secrets:Secret\n    properties:\n      name: foo\n      description: barr\n      tags:\n        - foo\n        - terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Apply the ephemeral policy on a secret\n\nThe following command shows you how to apply the [ephemeral policy](https://www.scaleway.com/en/docs/identity-and-access-management/secret-manager/concepts/#ephemeral-policy) on your secret named \u003cspan pulumi-lang-nodejs=\"`foo`\" pulumi-lang-dotnet=\"`Foo`\" pulumi-lang-go=\"`foo`\" pulumi-lang-python=\"`foo`\" pulumi-lang-yaml=\"`foo`\" pulumi-lang-java=\"`foo`\"\u003e`foo`\u003c/span\u003e.\n\nIn the example below, your secret's lifetime is of 24 hours, your secret versions will expire once they are accessed, and they are disabled after being accessed.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ephemeral = new scaleway.secrets.Secret(\"ephemeral\", {\n    name: \"foo\",\n    ephemeralPolicies: [{\n        ttl: \"24h\",\n        expiresOnceAccessed: true,\n        action: \"disable\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nephemeral = scaleway.secrets.Secret(\"ephemeral\",\n    name=\"foo\",\n    ephemeral_policies=[{\n        \"ttl\": \"24h\",\n        \"expires_once_accessed\": True,\n        \"action\": \"disable\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ephemeral = new Scaleway.Secrets.Secret(\"ephemeral\", new()\n    {\n        Name = \"foo\",\n        EphemeralPolicies = new[]\n        {\n            new Scaleway.Secrets.Inputs.SecretEphemeralPolicyArgs\n            {\n                Ttl = \"24h\",\n                ExpiresOnceAccessed = true,\n                Action = \"disable\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/secrets\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secrets.NewSecret(ctx, \"ephemeral\", \u0026secrets.SecretArgs{\n\t\t\tName: pulumi.String(\"foo\"),\n\t\t\tEphemeralPolicies: secrets.SecretEphemeralPolicyArray{\n\t\t\t\t\u0026secrets.SecretEphemeralPolicyArgs{\n\t\t\t\t\tTtl:                 pulumi.String(\"24h\"),\n\t\t\t\t\tExpiresOnceAccessed: pulumi.Bool(true),\n\t\t\t\t\tAction:              pulumi.String(\"disable\"),\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.scaleway.secrets.Secret;\nimport com.pulumi.scaleway.secrets.SecretArgs;\nimport com.pulumi.scaleway.secrets.inputs.SecretEphemeralPolicyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ephemeral = new Secret(\"ephemeral\", SecretArgs.builder()\n            .name(\"foo\")\n            .ephemeralPolicies(SecretEphemeralPolicyArgs.builder()\n                .ttl(\"24h\")\n                .expiresOnceAccessed(true)\n                .action(\"disable\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ephemeral:\n    type: scaleway:secrets:Secret\n    properties:\n      name: foo\n      ephemeralPolicies:\n        - ttl: 24h\n          expiresOnceAccessed: true\n          action: disable\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a secret using the `{region}/{id}` format.\n\n```sh\n$ pulumi import scaleway:index/secret:Secret main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of the secret's creation (in RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret (e.g. `my-new-description`).\n"
                },
                "ephemeralPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/SecretEphemeralPolicy:SecretEphemeralPolicy"
                    },
                    "description": "Ephemeral policy of the secret. Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the secret (e.g. `my-secret`).\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path of the secret, defaults to `/`.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID containing is the secret.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "True if secret protection is enabled on the secret. A protected secret cannot be deleted, terraform will fail to destroy unless this is set to false.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the resource exists.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the secret.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags of the secret (e.g. `[\"tag\", \"secret\"]`).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the secret. If not specified, the type is Opaque. Available values can be found in [SDK Constants](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/secret/v1beta1#pkg-constants).\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of the secret's last update (in RFC 3339 format).\n"
                },
                "versionCount": {
                    "type": "integer",
                    "description": "The amount of secret versions.\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/SecretVersion:SecretVersion"
                    },
                    "description": "List of the versions of the secret"
                }
            },
            "required": [
                "createdAt",
                "name",
                "projectId",
                "status",
                "updatedAt",
                "versionCount",
                "versions"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "Description of the secret (e.g. `my-new-description`).\n"
                },
                "ephemeralPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/SecretEphemeralPolicy:SecretEphemeralPolicy"
                    },
                    "description": "Ephemeral policy of the secret. Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the secret (e.g. `my-secret`).\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path of the secret, defaults to `/`.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID containing is the secret.\n",
                    "willReplaceOnChanges": true
                },
                "protected": {
                    "type": "boolean",
                    "description": "True if secret protection is enabled on the secret. A protected secret cannot be deleted, terraform will fail to destroy unless this is set to false.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region\nin which the resource exists.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags of the secret (e.g. `[\"tag\", \"secret\"]`).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the secret. If not specified, the type is Opaque. Available values can be found in [SDK Constants](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/secret/v1beta1#pkg-constants).\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Secret resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of the secret's creation (in RFC 3339 format).\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description of the secret (e.g. `my-new-description`).\n"
                    },
                    "ephemeralPolicies": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/SecretEphemeralPolicy:SecretEphemeralPolicy"
                        },
                        "description": "Ephemeral policy of the secret. Policy that defines whether/when a secret's versions expire. By default, the policy is applied to all the secret's versions.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the secret (e.g. `my-secret`).\n"
                    },
                    "path": {
                        "type": "string",
                        "description": "Path of the secret, defaults to `/`.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The project ID containing is the secret.\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "True if secret protection is enabled on the secret. A protected secret cannot be deleted, terraform will fail to destroy unless this is set to false.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region\nin which the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the secret.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags of the secret (e.g. `[\"tag\", \"secret\"]`).\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Type of the secret. If not specified, the type is Opaque. Available values can be found in [SDK Constants](https://pkg.go.dev/github.com/scaleway/scaleway-sdk-go@master/api/secret/v1beta1#pkg-constants).\n",
                        "willReplaceOnChanges": true
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of the secret's last update (in RFC 3339 format).\n"
                    },
                    "versionCount": {
                        "type": "integer",
                        "description": "The amount of secret versions.\n"
                    },
                    "versions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/SecretVersion:SecretVersion"
                        },
                        "description": "List of the versions of the secret"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/secret.Secret has been deprecated in favor of scaleway.secrets/secret.Secret"
        },
        "scaleway:index/secretVersion:SecretVersion": {
            "description": "The \u003cspan pulumi-lang-nodejs=\"`scaleway.secrets.Version`\" pulumi-lang-dotnet=\"`scaleway.secrets.Version`\" pulumi-lang-go=\"`secrets.Version`\" pulumi-lang-python=\"`secrets.Version`\" pulumi-lang-yaml=\"`scaleway.secrets.Version`\" pulumi-lang-java=\"`scaleway.secrets.Version`\"\u003e`scaleway.secrets.Version`\u003c/span\u003e resource allows you to create and manage secret versions in Scaleway Secret Manager.\n\nRefer to the Secret Manager [product documentation](https://www.scaleway.com/en/docs/secret-manager/) and [API documentation](https://www.scaleway.com/en/developers/api/secret-manager/) for more information.\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using the \u003cspan pulumi-lang-nodejs=\"`dataWo`\" pulumi-lang-dotnet=\"`DataWo`\" pulumi-lang-go=\"`dataWo`\" pulumi-lang-python=\"`data_wo`\" pulumi-lang-yaml=\"`dataWo`\" pulumi-lang-java=\"`dataWo`\"\u003e`dataWo`\u003c/span\u003e write-only argument instead of the regular \u003cspan pulumi-lang-nodejs=\"`data`\" pulumi-lang-dotnet=\"`Data`\" pulumi-lang-go=\"`data`\" pulumi-lang-python=\"`data`\" pulumi-lang-yaml=\"`data`\" pulumi-lang-java=\"`data`\"\u003e`data`\u003c/span\u003e argument. This ensures your sensitive data is never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n## Example Usage\n\n### Create a secret and a version\n\nThe following commands allow you to:\n\n- create a secret named \u003cspan pulumi-lang-nodejs=\"`foo`\" pulumi-lang-dotnet=\"`Foo`\" pulumi-lang-go=\"`foo`\" pulumi-lang-python=\"`foo`\" pulumi-lang-yaml=\"`foo`\" pulumi-lang-java=\"`foo`\"\u003e`foo`\u003c/span\u003e\n- create a version of this secret containing the \u003cspan pulumi-lang-nodejs=\"`myNewSecret`\" pulumi-lang-dotnet=\"`MyNewSecret`\" pulumi-lang-go=\"`myNewSecret`\" pulumi-lang-python=\"`my_new_secret`\" pulumi-lang-yaml=\"`myNewSecret`\" pulumi-lang-java=\"`myNewSecret`\"\u003e`myNewSecret`\u003c/span\u003e data\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.secrets.Secret(\"main\", {\n    name: \"foo\",\n    description: \"barr\",\n    tags: [\n        \"foo\",\n        \"terraform\",\n    ],\n});\nconst v1 = new scaleway.secrets.Version(\"v1\", {\n    description: \"version1\",\n    secretId: main.id,\n    data: \"my_new_secret\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.secrets.Secret(\"main\",\n    name=\"foo\",\n    description=\"barr\",\n    tags=[\n        \"foo\",\n        \"terraform\",\n    ])\nv1 = scaleway.secrets.Version(\"v1\",\n    description=\"version1\",\n    secret_id=main.id,\n    data=\"my_new_secret\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Secrets.Secret(\"main\", new()\n    {\n        Name = \"foo\",\n        Description = \"barr\",\n        Tags = new[]\n        {\n            \"foo\",\n            \"terraform\",\n        },\n    });\n\n    var v1 = new Scaleway.Secrets.Version(\"v1\", new()\n    {\n        Description = \"version1\",\n        SecretId = main.Id,\n        Data = \"my_new_secret\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/secrets\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := secrets.NewSecret(ctx, \"main\", \u0026secrets.SecretArgs{\n\t\t\tName:        pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"barr\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secrets.NewVersion(ctx, \"v1\", \u0026secrets.VersionArgs{\n\t\t\tDescription: pulumi.String(\"version1\"),\n\t\t\tSecretId:    main.ID(),\n\t\t\tData:        pulumi.String(\"my_new_secret\"),\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.scaleway.secrets.Secret;\nimport com.pulumi.scaleway.secrets.SecretArgs;\nimport com.pulumi.scaleway.secrets.Version;\nimport com.pulumi.scaleway.secrets.VersionArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Secret(\"main\", SecretArgs.builder()\n            .name(\"foo\")\n            .description(\"barr\")\n            .tags(            \n                \"foo\",\n                \"terraform\")\n            .build());\n\n        var v1 = new Version(\"v1\", VersionArgs.builder()\n            .description(\"version1\")\n            .secretId(main.id())\n            .data(\"my_new_secret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:secrets:Secret\n    properties:\n      name: foo\n      description: barr\n      tags:\n        - foo\n        - terraform\n  v1:\n    type: scaleway:secrets:Version\n    properties:\n      description: version1\n      secretId: ${main.id}\n      data: my_new_secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis section explains how to import a secret version using the `{region}/{id}/{revision}` format.\n\n\u003e **Important:** Keep in mind that if you import with the \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e revision, you will overwrite the previous version you might have been using.\n\n```sh\n$ pulumi import scaleway:index/secretVersion:SecretVersion main fr-par/11111111-1111-1111-1111-111111111111/2\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the secret version's creation (in RFC 3339 format).\n"
                },
                "data": {
                    "type": "string",
                    "description": "The raw data payload of the secret version. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                    "secret": true
                },
                "dataWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nThe raw data payload of your secret version in write-only mode. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                    "secret": true
                },
                "dataWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only data. To update the \u003cspan pulumi-lang-nodejs=\"`dataWo`\" pulumi-lang-dotnet=\"`DataWo`\" pulumi-lang-go=\"`dataWo`\" pulumi-lang-python=\"`data_wo`\" pulumi-lang-yaml=\"`dataWo`\" pulumi-lang-java=\"`dataWo`\"\u003e`dataWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`dataWoVersion`\" pulumi-lang-dotnet=\"`DataWoVersion`\" pulumi-lang-go=\"`dataWoVersion`\" pulumi-lang-python=\"`data_wo_version`\" pulumi-lang-yaml=\"`dataWoVersion`\" pulumi-lang-java=\"`dataWoVersion`\"\u003e`dataWoVersion`\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret version (e.g. `my-new-description`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "). The region where the resource exists.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The revision number of the secret version.\n"
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the secret associated with the version.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the secret version.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the secret version's last update (in RFC 3339 format).\n"
                }
            },
            "required": [
                "createdAt",
                "revision",
                "secretId",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "data": {
                    "type": "string",
                    "description": "The raw data payload of the secret version. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "dataWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nThe raw data payload of your secret version in write-only mode. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                    "secret": true
                },
                "dataWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only data. To update the \u003cspan pulumi-lang-nodejs=\"`dataWo`\" pulumi-lang-dotnet=\"`DataWo`\" pulumi-lang-go=\"`dataWo`\" pulumi-lang-python=\"`data_wo`\" pulumi-lang-yaml=\"`dataWo`\" pulumi-lang-java=\"`dataWo`\"\u003e`dataWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`dataWoVersion`\" pulumi-lang-dotnet=\"`DataWoVersion`\" pulumi-lang-go=\"`dataWoVersion`\" pulumi-lang-python=\"`data_wo_version`\" pulumi-lang-yaml=\"`dataWoVersion`\" pulumi-lang-java=\"`dataWoVersion`\"\u003e`dataWoVersion`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "Description of the secret version (e.g. `my-new-description`).\n"
                },
                "region": {
                    "type": "string",
                    "description": "). The region where the resource exists.\n",
                    "willReplaceOnChanges": true
                },
                "secretId": {
                    "type": "string",
                    "description": "The ID of the secret associated with the version.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "secretId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SecretVersion resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the secret version's creation (in RFC 3339 format).\n"
                    },
                    "data": {
                        "type": "string",
                        "description": "The raw data payload of the secret version. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                        "secret": true,
                        "willReplaceOnChanges": true
                    },
                    "dataWo": {
                        "type": "string",
                        "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nThe raw data payload of your secret version in write-only mode. Must not exceed 64KiB in size (e.g. `my-secret-version-payload`). Find out more on the data section.\n",
                        "secret": true
                    },
                    "dataWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only data. To update the \u003cspan pulumi-lang-nodejs=\"`dataWo`\" pulumi-lang-dotnet=\"`DataWo`\" pulumi-lang-go=\"`dataWo`\" pulumi-lang-python=\"`data_wo`\" pulumi-lang-yaml=\"`dataWo`\" pulumi-lang-java=\"`dataWo`\"\u003e`dataWo`\u003c/span\u003e, you must also update the \u003cspan pulumi-lang-nodejs=\"`dataWoVersion`\" pulumi-lang-dotnet=\"`DataWoVersion`\" pulumi-lang-go=\"`dataWoVersion`\" pulumi-lang-python=\"`data_wo_version`\" pulumi-lang-yaml=\"`dataWoVersion`\" pulumi-lang-java=\"`dataWoVersion`\"\u003e`dataWoVersion`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "description": {
                        "type": "string",
                        "description": "Description of the secret version (e.g. `my-new-description`).\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "). The region where the resource exists.\n",
                        "willReplaceOnChanges": true
                    },
                    "revision": {
                        "type": "string",
                        "description": "The revision number of the secret version.\n"
                    },
                    "secretId": {
                        "type": "string",
                        "description": "The ID of the secret associated with the version.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the secret version.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the secret version's last update (in RFC 3339 format).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/secretversion.SecretVersion has been deprecated in favor of scaleway.secrets/version.Version"
        },
        "scaleway:index/temDomain:TemDomain": {
            "description": "Creates and manages Scaleway Transactional Email Domains.\nFor more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/transactional-email).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.tem.Domain(\"main\", {\n    acceptTos: true,\n    name: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.tem.Domain(\"main\",\n    accept_tos=True,\n    name=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Tem.Domain(\"main\", new()\n    {\n        AcceptTos = true,\n        Name = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tem.NewDomain(ctx, \"main\", \u0026tem.DomainArgs{\n\t\t\tAcceptTos: pulumi.Bool(true),\n\t\t\tName:      pulumi.String(\"example.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.scaleway.tem.Domain;\nimport com.pulumi.scaleway.tem.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Domain(\"main\", DomainArgs.builder()\n            .acceptTos(true)\n            .name(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:tem:Domain\n    properties:\n      acceptTos: true\n      name: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Add the required records to your DNS zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst domainName = config.require(\"domainName\");\nconst main = new scaleway.tem.Domain(\"main\", {\n    name: domainName,\n    acceptTos: true,\n});\nconst spf = new scaleway.domain.Record(\"spf\", {\n    dnsZone: domainName,\n    type: \"TXT\",\n    data: main.spfValue,\n});\nconst dkim = new scaleway.domain.Record(\"dkim\", {\n    dnsZone: domainName,\n    name: main.dkimName,\n    type: \"TXT\",\n    data: main.dkimConfig,\n});\nconst mx = new scaleway.domain.Record(\"mx\", {\n    dnsZone: domainName,\n    type: \"MX\",\n    data: main.mxConfig,\n});\nconst dmarc = new scaleway.domain.Record(\"dmarc\", {\n    dnsZone: domainName,\n    name: main.dmarcName,\n    type: \"TXT\",\n    data: main.dmarcConfig,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\ndomain_name = config.require(\"domainName\")\nmain = scaleway.tem.Domain(\"main\",\n    name=domain_name,\n    accept_tos=True)\nspf = scaleway.domain.Record(\"spf\",\n    dns_zone=domain_name,\n    type=\"TXT\",\n    data=main.spf_value)\ndkim = scaleway.domain.Record(\"dkim\",\n    dns_zone=domain_name,\n    name=main.dkim_name,\n    type=\"TXT\",\n    data=main.dkim_config)\nmx = scaleway.domain.Record(\"mx\",\n    dns_zone=domain_name,\n    type=\"MX\",\n    data=main.mx_config)\ndmarc = scaleway.domain.Record(\"dmarc\",\n    dns_zone=domain_name,\n    name=main.dmarc_name,\n    type=\"TXT\",\n    data=main.dmarc_config)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var domainName = config.Require(\"domainName\");\n    var main = new Scaleway.Tem.Domain(\"main\", new()\n    {\n        Name = domainName,\n        AcceptTos = true,\n    });\n\n    var spf = new Scaleway.Domain.Record(\"spf\", new()\n    {\n        DnsZone = domainName,\n        Type = \"TXT\",\n        Data = main.SpfValue,\n    });\n\n    var dkim = new Scaleway.Domain.Record(\"dkim\", new()\n    {\n        DnsZone = domainName,\n        Name = main.DkimName,\n        Type = \"TXT\",\n        Data = main.DkimConfig,\n    });\n\n    var mx = new Scaleway.Domain.Record(\"mx\", new()\n    {\n        DnsZone = domainName,\n        Type = \"MX\",\n        Data = main.MxConfig,\n    });\n\n    var dmarc = new Scaleway.Domain.Record(\"dmarc\", new()\n    {\n        DnsZone = domainName,\n        Name = main.DmarcName,\n        Type = \"TXT\",\n        Data = main.DmarcConfig,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomainName := cfg.Require(\"domainName\")\n\t\tmain, err := tem.NewDomain(ctx, \"main\", \u0026tem.DomainArgs{\n\t\t\tName:      pulumi.String(pulumi.String(domainName)),\n\t\t\tAcceptTos: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"spf\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tType:    pulumi.String(\"TXT\"),\n\t\t\tData:    main.SpfValue,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"dkim\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tName:    main.DkimName,\n\t\t\tType:    pulumi.String(\"TXT\"),\n\t\t\tData:    main.DkimConfig,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tType:    pulumi.String(\"MX\"),\n\t\t\tData:    main.MxConfig,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"dmarc\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tName:    main.DmarcName,\n\t\t\tType:    pulumi.String(\"TXT\"),\n\t\t\tData:    main.DmarcConfig,\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.scaleway.tem.Domain;\nimport com.pulumi.scaleway.tem.DomainArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var domainName = config.require(\"domainName\");\n        var main = new Domain(\"main\", DomainArgs.builder()\n            .name(domainName)\n            .acceptTos(true)\n            .build());\n\n        var spf = new Record(\"spf\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .type(\"TXT\")\n            .data(main.spfValue())\n            .build());\n\n        var dkim = new Record(\"dkim\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .name(main.dkimName())\n            .type(\"TXT\")\n            .data(main.dkimConfig())\n            .build());\n\n        var mx = new Record(\"mx\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .type(\"MX\")\n            .data(main.mxConfig())\n            .build());\n\n        var dmarc = new Record(\"dmarc\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .name(main.dmarcName())\n            .type(\"TXT\")\n            .data(main.dmarcConfig())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  domainName:\n    type: string\nresources:\n  main:\n    type: scaleway:tem:Domain\n    properties:\n      name: ${domainName}\n      acceptTos: true\n  spf:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      type: TXT\n      data: ${main.spfValue}\n  dkim:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      name: ${main.dkimName}\n      type: TXT\n      data: ${main.dkimConfig}\n  mx:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      type: MX\n      data: ${main.mxConfig}\n  dmarc:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      name: ${main.dmarcName}\n      type: TXT\n      data: ${main.dmarcConfig}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Automatically Configure DNS Settings for Your Domain\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst domainName = config.require(\"domainName\");\nconst main = new scaleway.tem.Domain(\"main\", {\n    name: domainName,\n    acceptTos: true,\n    autoconfig: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\ndomain_name = config.require(\"domainName\")\nmain = scaleway.tem.Domain(\"main\",\n    name=domain_name,\n    accept_tos=True,\n    autoconfig=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var domainName = config.Require(\"domainName\");\n    var main = new Scaleway.Tem.Domain(\"main\", new()\n    {\n        Name = domainName,\n        AcceptTos = true,\n        Autoconfig = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomainName := cfg.Require(\"domainName\")\n\t\t_, err := tem.NewDomain(ctx, \"main\", \u0026tem.DomainArgs{\n\t\t\tName:       pulumi.String(pulumi.String(domainName)),\n\t\t\tAcceptTos:  pulumi.Bool(true),\n\t\t\tAutoconfig: 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.scaleway.tem.Domain;\nimport com.pulumi.scaleway.tem.DomainArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var domainName = config.require(\"domainName\");\n        var main = new Domain(\"main\", DomainArgs.builder()\n            .name(domainName)\n            .acceptTos(true)\n            .autoconfig(true)\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  domainName:\n    type: string\nresources:\n  main:\n    type: scaleway:tem:Domain\n    properties:\n      name: ${domainName}\n      acceptTos: true\n      autoconfig: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Configuring GitLab Project Variables\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gitlab from \"@pulumi/gitlab\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst domainName = config.require(\"domainName\");\nconst myDomain = scaleway.tem.getDomain({\n    name: domainName,\n});\nconst smtpAuthUser = new gitlab.ProjectVariable(\"smtp_auth_user\", {\n    key: \"SMTP_AUTH_USER\",\n    value: myDomain.then(myDomain =\u003e myDomain.smtpsAuthUser),\n});\nconst smtpPort = new gitlab.ProjectVariable(\"smtp_port\", {\n    key: \"SMTP_PORT\",\n    value: output(myDomain.then(myDomain =\u003e myDomain.smtpsPort)).apply(x =\u003eString(x)),\n});\nconst smtpHost = new gitlab.ProjectVariable(\"smtp_host\", {\n    key: \"SMTP_HOST\",\n    value: output(myDomain.then(myDomain =\u003e myDomain.smtpsHost)).apply(x =\u003eString(x)),\n});\n```\n```python\nimport pulumi\nimport pulumi_gitlab as gitlab\nimport pulumi_scaleway as scaleway\n\nconfig = pulumi.Config()\ndomain_name = config.require(\"domainName\")\nmy_domain = scaleway.tem.get_domain(name=domain_name)\nsmtp_auth_user = gitlab.ProjectVariable(\"smtp_auth_user\",\n    key=\"SMTP_AUTH_USER\",\n    value=my_domain.smtps_auth_user)\nsmtp_port = gitlab.ProjectVariable(\"smtp_port\",\n    key=\"SMTP_PORT\",\n    value=output(my_domain.smtps_port).apply(lambda x: str(x)))\nsmtp_host = gitlab.ProjectVariable(\"smtp_host\",\n    key=\"SMTP_HOST\",\n    value=output(my_domain.smtps_host).apply(lambda x: str(x)))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing GitLab = Pulumi.GitLab;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var domainName = config.Require(\"domainName\");\n    var myDomain = Scaleway.Tem.GetDomain.Invoke(new()\n    {\n        Name = domainName,\n    });\n\n    var smtpAuthUser = new GitLab.ProjectVariable(\"smtp_auth_user\", new()\n    {\n        Key = \"SMTP_AUTH_USER\",\n        Value = myDomain.Apply(getDomainResult =\u003e getDomainResult.SmtpsAuthUser),\n    });\n\n    var smtpPort = new GitLab.ProjectVariable(\"smtp_port\", new()\n    {\n        Key = \"SMTP_PORT\",\n        Value = myDomain.Apply(getDomainResult =\u003e getDomainResult.SmtpsPort),\n    });\n\n    var smtpHost = new GitLab.ProjectVariable(\"smtp_host\", new()\n    {\n        Key = \"SMTP_HOST\",\n        Value = myDomain.Apply(getDomainResult =\u003e getDomainResult.SmtpsHost),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gitlab/sdk/v9/go/gitlab\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomainName := cfg.Require(\"domainName\")\n\t\tmyDomain, err := tem.LookupDomain(ctx, \u0026tem.LookupDomainArgs{\n\t\t\tName: pulumi.StringRef(domainName),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gitlab.NewProjectVariable(ctx, \"smtp_auth_user\", \u0026gitlab.ProjectVariableArgs{\n\t\t\tKey:   pulumi.String(\"SMTP_AUTH_USER\"),\n\t\t\tValue: pulumi.String(pulumi.String(myDomain.SmtpsAuthUser)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gitlab.NewProjectVariable(ctx, \"smtp_port\", \u0026gitlab.ProjectVariableArgs{\n\t\t\tKey:   pulumi.String(\"SMTP_PORT\"),\n\t\t\tValue: pulumi.String(pulumi.Int(myDomain.SmtpsPort)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gitlab.NewProjectVariable(ctx, \"smtp_host\", \u0026gitlab.ProjectVariableArgs{\n\t\t\tKey:   pulumi.String(\"SMTP_HOST\"),\n\t\t\tValue: pulumi.String(pulumi.Any(myDomain.SmtpsHost)),\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.scaleway.tem.TemFunctions;\nimport com.pulumi.scaleway.tem.inputs.GetDomainArgs;\nimport com.pulumi.gitlab.ProjectVariable;\nimport com.pulumi.gitlab.ProjectVariableArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var domainName = config.require(\"domainName\");\n        final var myDomain = TemFunctions.getDomain(GetDomainArgs.builder()\n            .name(domainName)\n            .build());\n\n        var smtpAuthUser = new ProjectVariable(\"smtpAuthUser\", ProjectVariableArgs.builder()\n            .key(\"SMTP_AUTH_USER\")\n            .value(myDomain.smtpsAuthUser())\n            .build());\n\n        var smtpPort = new ProjectVariable(\"smtpPort\", ProjectVariableArgs.builder()\n            .key(\"SMTP_PORT\")\n            .value(myDomain.smtpsPort())\n            .build());\n\n        var smtpHost = new ProjectVariable(\"smtpHost\", ProjectVariableArgs.builder()\n            .key(\"SMTP_HOST\")\n            .value(myDomain.smtpsHost())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  domainName:\n    type: string\nresources:\n  smtpAuthUser:\n    type: gitlab:ProjectVariable\n    name: smtp_auth_user\n    properties:\n      key: SMTP_AUTH_USER\n      value: ${myDomain.smtpsAuthUser}\n  smtpPort:\n    type: gitlab:ProjectVariable\n    name: smtp_port\n    properties:\n      key: SMTP_PORT\n      value: ${myDomain.smtpsPort}\n  smtpHost:\n    type: gitlab:ProjectVariable\n    name: smtp_host\n    properties:\n      key: SMTP_HOST\n      value: ${myDomain.smtpsHost}\nvariables:\n  myDomain:\n    fn::invoke:\n      function: scaleway:tem:getDomain\n      arguments:\n        name: ${domainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomains can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/temDomain:TemDomain main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acceptTos": {
                    "type": "boolean",
                    "description": "Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).\n\u003e **Important:** This attribute must be 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.\n"
                },
                "autoconfig": {
                    "type": "boolean",
                    "description": "Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the Transaction Email Domain's creation (RFC 3339 format).\n"
                },
                "dkimConfig": {
                    "type": "string",
                    "description": "The DKIM public key, as should be recorded in the DNS zone.\n"
                },
                "dkimName": {
                    "type": "string",
                    "description": "DKIM name for the domain, as should be recorded in the DNS zone.\n"
                },
                "dmarcConfig": {
                    "type": "string",
                    "description": "DMARC record for the domain, as should be recorded in the DNS zone.\n"
                },
                "dmarcName": {
                    "type": "string",
                    "description": "DMARC name for the domain, as should be recorded in the DNS zone.\n"
                },
                "lastError": {
                    "type": "string",
                    "description": "(Deprecated) The error message if the last check failed.\n",
                    "deprecationMessage": "last_error is deprecated"
                },
                "lastValidAt": {
                    "type": "string",
                    "description": "The date and time the domain was last found to be valid (RFC 3339 format).\n"
                },
                "mxBlackhole": {
                    "type": "string",
                    "description": "The Scaleway's blackhole MX server to use if you do not have one.\n"
                },
                "mxConfig": {
                    "type": "string",
                    "description": "MX record configuration for the domain blackhole.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The domain name, must not be used in another Transactional Email Domain.\n\u003e **Important:** Updates to \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 recreate the domain.\n"
                },
                "nextCheckAt": {
                    "type": "string",
                    "description": "The date and time of the next scheduled check (RFC 3339 format).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the domain is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the domain should be created.\n\u003e **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.\n"
                },
                "reputations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/TemDomainReputation:TemDomainReputation"
                    },
                    "description": "The domain's reputation.\n"
                },
                "revokedAt": {
                    "type": "string",
                    "description": "The date and time of the revocation of the domain (RFC 3339 format).\n"
                },
                "smtpHost": {
                    "type": "string",
                    "description": "The SMTP host to use to send emails.\n"
                },
                "smtpPort": {
                    "type": "integer",
                    "description": "The SMTP port to use to send emails over TLS.\n"
                },
                "smtpPortAlternative": {
                    "type": "integer",
                    "description": "The SMTP port to use to send emails over TLS.\n"
                },
                "smtpPortUnsecure": {
                    "type": "integer",
                    "description": "The SMTP port to use to send emails.\n"
                },
                "smtpsAuthUser": {
                    "type": "string",
                    "description": "SMTPS auth user refers to the identifier for a user authorized to send emails via SMTPS, ensuring secure email transmission.\n"
                },
                "smtpsPort": {
                    "type": "integer",
                    "description": "The SMTPS port to use to send emails over TLS Wrapper.\n"
                },
                "smtpsPortAlternative": {
                    "type": "integer",
                    "description": "The SMTPS port to use to send emails over TLS Wrapper.\n"
                },
                "spfConfig": {
                    "type": "string",
                    "description": "The snippet of the SPF record that should be registered in the DNS zone.\n"
                },
                "spfValue": {
                    "type": "string",
                    "description": "Complete SPF record value for the domain, as should be recorded in the DNS zone.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the domain's reputation.\n"
                }
            },
            "required": [
                "acceptTos",
                "createdAt",
                "dkimConfig",
                "dkimName",
                "dmarcConfig",
                "dmarcName",
                "lastError",
                "lastValidAt",
                "mxBlackhole",
                "mxConfig",
                "name",
                "nextCheckAt",
                "projectId",
                "reputations",
                "revokedAt",
                "smtpHost",
                "smtpPort",
                "smtpPortAlternative",
                "smtpPortUnsecure",
                "smtpsAuthUser",
                "smtpsPort",
                "smtpsPortAlternative",
                "spfConfig",
                "spfValue",
                "status"
            ],
            "inputProperties": {
                "acceptTos": {
                    "type": "boolean",
                    "description": "Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).\n\u003e **Important:** This attribute must be 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.\n",
                    "willReplaceOnChanges": true
                },
                "autoconfig": {
                    "type": "boolean",
                    "description": "Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The domain name, must not be used in another Transactional Email Domain.\n\u003e **Important:** Updates to \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 recreate the domain.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the domain is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). The region in which the domain should be created.\n\u003e **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "acceptTos"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TemDomain resources.\n",
                "properties": {
                    "acceptTos": {
                        "type": "boolean",
                        "description": "Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).\n\u003e **Important:** This attribute must be 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.\n",
                        "willReplaceOnChanges": true
                    },
                    "autoconfig": {
                        "type": "boolean",
                        "description": "Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the Transaction Email Domain's creation (RFC 3339 format).\n"
                    },
                    "dkimConfig": {
                        "type": "string",
                        "description": "The DKIM public key, as should be recorded in the DNS zone.\n"
                    },
                    "dkimName": {
                        "type": "string",
                        "description": "DKIM name for the domain, as should be recorded in the DNS zone.\n"
                    },
                    "dmarcConfig": {
                        "type": "string",
                        "description": "DMARC record for the domain, as should be recorded in the DNS zone.\n"
                    },
                    "dmarcName": {
                        "type": "string",
                        "description": "DMARC name for the domain, as should be recorded in the DNS zone.\n"
                    },
                    "lastError": {
                        "type": "string",
                        "description": "(Deprecated) The error message if the last check failed.\n",
                        "deprecationMessage": "last_error is deprecated"
                    },
                    "lastValidAt": {
                        "type": "string",
                        "description": "The date and time the domain was last found to be valid (RFC 3339 format).\n"
                    },
                    "mxBlackhole": {
                        "type": "string",
                        "description": "The Scaleway's blackhole MX server to use if you do not have one.\n"
                    },
                    "mxConfig": {
                        "type": "string",
                        "description": "MX record configuration for the domain blackhole.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The domain name, must not be used in another Transactional Email Domain.\n\u003e **Important:** Updates to \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 recreate the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "nextCheckAt": {
                        "type": "string",
                        "description": "The date and time of the next scheduled check (RFC 3339 format).\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the domain is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). The region in which the domain should be created.\n\u003e **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.\n",
                        "willReplaceOnChanges": true
                    },
                    "reputations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/TemDomainReputation:TemDomainReputation"
                        },
                        "description": "The domain's reputation.\n"
                    },
                    "revokedAt": {
                        "type": "string",
                        "description": "The date and time of the revocation of the domain (RFC 3339 format).\n"
                    },
                    "smtpHost": {
                        "type": "string",
                        "description": "The SMTP host to use to send emails.\n"
                    },
                    "smtpPort": {
                        "type": "integer",
                        "description": "The SMTP port to use to send emails over TLS.\n"
                    },
                    "smtpPortAlternative": {
                        "type": "integer",
                        "description": "The SMTP port to use to send emails over TLS.\n"
                    },
                    "smtpPortUnsecure": {
                        "type": "integer",
                        "description": "The SMTP port to use to send emails.\n"
                    },
                    "smtpsAuthUser": {
                        "type": "string",
                        "description": "SMTPS auth user refers to the identifier for a user authorized to send emails via SMTPS, ensuring secure email transmission.\n"
                    },
                    "smtpsPort": {
                        "type": "integer",
                        "description": "The SMTPS port to use to send emails over TLS Wrapper.\n"
                    },
                    "smtpsPortAlternative": {
                        "type": "integer",
                        "description": "The SMTPS port to use to send emails over TLS Wrapper.\n"
                    },
                    "spfConfig": {
                        "type": "string",
                        "description": "The snippet of the SPF record that should be registered in the DNS zone.\n"
                    },
                    "spfValue": {
                        "type": "string",
                        "description": "Complete SPF record value for the domain, as should be recorded in the DNS zone.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the domain's reputation.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/temdomain.TemDomain has been deprecated in favor of scaleway.tem/domain.Domain"
        },
        "scaleway:index/temDomainValidation:TemDomainValidation": {
            "description": "This Terraform resource manages the validation of domains for use with Scaleway's Transactional Email Management (TEM) service. It ensures that domains used for sending emails are verified and comply with Scaleway's requirements for email sending.\nFor more information refer to the [API documentation](https://developers.scaleway.com/en/products/transactional_email/api/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.tem.Domain(\"main\", {\n    acceptTos: true,\n    name: \"example.com\",\n});\nconst example = new scaleway.tem.DomainValidation(\"example\", {\n    domainId: main.id,\n    region: \"fr-par\",\n    timeout: 300,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.tem.Domain(\"main\",\n    accept_tos=True,\n    name=\"example.com\")\nexample = scaleway.tem.DomainValidation(\"example\",\n    domain_id=main.id,\n    region=\"fr-par\",\n    timeout=300)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Tem.Domain(\"main\", new()\n    {\n        AcceptTos = true,\n        Name = \"example.com\",\n    });\n\n    var example = new Scaleway.Tem.DomainValidation(\"example\", new()\n    {\n        DomainId = main.Id,\n        Region = \"fr-par\",\n        Timeout = 300,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := tem.NewDomain(ctx, \"main\", \u0026tem.DomainArgs{\n\t\t\tAcceptTos: pulumi.Bool(true),\n\t\t\tName:      pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tem.NewDomainValidation(ctx, \"example\", \u0026tem.DomainValidationArgs{\n\t\t\tDomainId: main.ID(),\n\t\t\tRegion:   pulumi.String(\"fr-par\"),\n\t\t\tTimeout:  pulumi.Int(300),\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.scaleway.tem.Domain;\nimport com.pulumi.scaleway.tem.DomainArgs;\nimport com.pulumi.scaleway.tem.DomainValidation;\nimport com.pulumi.scaleway.tem.DomainValidationArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Domain(\"main\", DomainArgs.builder()\n            .acceptTos(true)\n            .name(\"example.com\")\n            .build());\n\n        var example = new DomainValidation(\"example\", DomainValidationArgs.builder()\n            .domainId(main.id())\n            .region(\"fr-par\")\n            .timeout(300)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:tem:Domain\n    properties:\n      acceptTos: true\n      name: example.com\n  example:\n    type: scaleway:tem:DomainValidation\n    properties:\n      domainId: ${main.id}\n      region: fr-par\n      timeout: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "domainId": {
                    "type": "string",
                    "description": "The ID of the domain name used when sending emails. This ID must correspond to a domain already registered with Scaleway's Transactional Email service.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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). Specifies the region where the domain is registered. If not specified, it defaults to the provider's region.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum wait time in seconds before returning an error if the domain validation does not complete. The default is 300 seconds.\n"
                },
                "validated": {
                    "type": "boolean",
                    "description": "Indicates if the domain has been verified for email sending. This is computed after the creation or update of the domain validation resource.\n"
                }
            },
            "required": [
                "domainId",
                "validated"
            ],
            "inputProperties": {
                "domainId": {
                    "type": "string",
                    "description": "The ID of the domain name used when sending emails. This ID must correspond to a domain already registered with Scaleway's Transactional Email service.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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). Specifies the region where the domain is registered. If not specified, it defaults to the provider's region.\n",
                    "willReplaceOnChanges": true
                },
                "timeout": {
                    "type": "integer",
                    "description": "The maximum wait time in seconds before returning an error if the domain validation does not complete. The default is 300 seconds.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "domainId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TemDomainValidation resources.\n",
                "properties": {
                    "domainId": {
                        "type": "string",
                        "description": "The ID of the domain name used when sending emails. This ID must correspond to a domain already registered with Scaleway's Transactional Email service.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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). Specifies the region where the domain is registered. If not specified, it defaults to the provider's region.\n",
                        "willReplaceOnChanges": true
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The maximum wait time in seconds before returning an error if the domain validation does not complete. The default is 300 seconds.\n",
                        "willReplaceOnChanges": true
                    },
                    "validated": {
                        "type": "boolean",
                        "description": "Indicates if the domain has been verified for email sending. This is computed after the creation or update of the domain validation resource.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/temdomainvalidation.TemDomainValidation has been deprecated in favor of scaleway.tem/domainvalidation.DomainValidation"
        },
        "scaleway:index/temWebhook:TemWebhook": {
            "description": "Creates and manages Scaleway Transactional Email Webhooks.\nFor more information, refer to the [API documentation](https://www.scaleway.com/en/developers/api/transactional-email).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.tem.Webhook(\"main\", {\n    domainId: \"your-domain-id\",\n    eventTypes: [\n        \"email_delivered\",\n        \"email_bounced\",\n    ],\n    snsArn: \"arn:scw:sns:fr-par:project-xxxx:your-sns-topic\",\n    name: \"example-webhook\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.tem.Webhook(\"main\",\n    domain_id=\"your-domain-id\",\n    event_types=[\n        \"email_delivered\",\n        \"email_bounced\",\n    ],\n    sns_arn=\"arn:scw:sns:fr-par:project-xxxx:your-sns-topic\",\n    name=\"example-webhook\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Tem.Webhook(\"main\", new()\n    {\n        DomainId = \"your-domain-id\",\n        EventTypes = new[]\n        {\n            \"email_delivered\",\n            \"email_bounced\",\n        },\n        SnsArn = \"arn:scw:sns:fr-par:project-xxxx:your-sns-topic\",\n        Name = \"example-webhook\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tem.NewWebhook(ctx, \"main\", \u0026tem.WebhookArgs{\n\t\t\tDomainId: pulumi.String(\"your-domain-id\"),\n\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"email_delivered\"),\n\t\t\t\tpulumi.String(\"email_bounced\"),\n\t\t\t},\n\t\t\tSnsArn: pulumi.String(\"arn:scw:sns:fr-par:project-xxxx:your-sns-topic\"),\n\t\t\tName:   pulumi.String(\"example-webhook\"),\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.scaleway.tem.Webhook;\nimport com.pulumi.scaleway.tem.WebhookArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Webhook(\"main\", WebhookArgs.builder()\n            .domainId(\"your-domain-id\")\n            .eventTypes(            \n                \"email_delivered\",\n                \"email_bounced\")\n            .snsArn(\"arn:scw:sns:fr-par:project-xxxx:your-sns-topic\")\n            .name(\"example-webhook\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:tem:Webhook\n    properties:\n      domainId: your-domain-id\n      eventTypes:\n        - email_delivered\n        - email_bounced\n      snsArn: arn:scw:sns:fr-par:project-xxxx:your-sns-topic\n      name: example-webhook\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Complete Example with Dependencies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst domainName = config.require(\"domainName\");\nconst sns = new scaleway.mnq.Sns(\"sns\", {});\nconst snsCredentials = new scaleway.mnq.SnsCredentials(\"sns_credentials\", {permissions: {\n    canManage: true,\n}});\nconst snsTopic = new scaleway.mnq.SnsTopic(\"sns_topic\", {\n    name: \"test-mnq-sns-topic-basic\",\n    accessKey: snsCredentials.accessKey,\n    secretKey: snsCredentials.secretKey,\n});\nconst cr01 = new scaleway.tem.Domain(\"cr01\", {\n    name: domainName,\n    acceptTos: true,\n});\nconst spf = new scaleway.domain.Record(\"spf\", {\n    dnsZone: domainName,\n    type: \"TXT\",\n    data: pulumi.interpolate`v=spf1 ${cr01.spfConfig} -all`,\n});\nconst dkim = new scaleway.domain.Record(\"dkim\", {\n    dnsZone: domainName,\n    name: pulumi.interpolate`${cr01.projectId}._domainkey`,\n    type: \"TXT\",\n    data: cr01.dkimConfig,\n});\nconst mx = new scaleway.domain.Record(\"mx\", {\n    dnsZone: domainName,\n    type: \"MX\",\n    data: \".\",\n});\nconst dmarc = new scaleway.domain.Record(\"dmarc\", {\n    dnsZone: domainName,\n    name: cr01.dmarcName,\n    type: \"TXT\",\n    data: cr01.dmarcConfig,\n});\nconst valid = new scaleway.tem.DomainValidation(\"valid\", {\n    domainId: cr01.id,\n    region: cr01.region,\n    timeout: 3600,\n});\nconst webhook = new scaleway.tem.Webhook(\"webhook\", {\n    name: \"example-webhook\",\n    domainId: cr01.id,\n    eventTypes: [\n        \"email_delivered\",\n        \"email_bounced\",\n    ],\n    snsArn: snsTopic.arn,\n}, {\n    dependsOn: [\n        valid,\n        snsTopic,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\ndomain_name = config.require(\"domainName\")\nsns = scaleway.mnq.Sns(\"sns\")\nsns_credentials = scaleway.mnq.SnsCredentials(\"sns_credentials\", permissions={\n    \"can_manage\": True,\n})\nsns_topic = scaleway.mnq.SnsTopic(\"sns_topic\",\n    name=\"test-mnq-sns-topic-basic\",\n    access_key=sns_credentials.access_key,\n    secret_key=sns_credentials.secret_key)\ncr01 = scaleway.tem.Domain(\"cr01\",\n    name=domain_name,\n    accept_tos=True)\nspf = scaleway.domain.Record(\"spf\",\n    dns_zone=domain_name,\n    type=\"TXT\",\n    data=cr01.spf_config.apply(lambda spf_config: f\"v=spf1 {spf_config} -all\"))\ndkim = scaleway.domain.Record(\"dkim\",\n    dns_zone=domain_name,\n    name=cr01.project_id.apply(lambda project_id: f\"{project_id}._domainkey\"),\n    type=\"TXT\",\n    data=cr01.dkim_config)\nmx = scaleway.domain.Record(\"mx\",\n    dns_zone=domain_name,\n    type=\"MX\",\n    data=\".\")\ndmarc = scaleway.domain.Record(\"dmarc\",\n    dns_zone=domain_name,\n    name=cr01.dmarc_name,\n    type=\"TXT\",\n    data=cr01.dmarc_config)\nvalid = scaleway.tem.DomainValidation(\"valid\",\n    domain_id=cr01.id,\n    region=cr01.region,\n    timeout=3600)\nwebhook = scaleway.tem.Webhook(\"webhook\",\n    name=\"example-webhook\",\n    domain_id=cr01.id,\n    event_types=[\n        \"email_delivered\",\n        \"email_bounced\",\n    ],\n    sns_arn=sns_topic.arn,\n    opts = pulumi.ResourceOptions(depends_on=[\n            valid,\n            sns_topic,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var domainName = config.Require(\"domainName\");\n    var sns = new Scaleway.Mnq.Sns(\"sns\");\n\n    var snsCredentials = new Scaleway.Mnq.SnsCredentials(\"sns_credentials\", new()\n    {\n        Permissions = new Scaleway.Mnq.Inputs.SnsCredentialsPermissionsArgs\n        {\n            CanManage = true,\n        },\n    });\n\n    var snsTopic = new Scaleway.Mnq.SnsTopic(\"sns_topic\", new()\n    {\n        Name = \"test-mnq-sns-topic-basic\",\n        AccessKey = snsCredentials.AccessKey,\n        SecretKey = snsCredentials.SecretKey,\n    });\n\n    var cr01 = new Scaleway.Tem.Domain(\"cr01\", new()\n    {\n        Name = domainName,\n        AcceptTos = true,\n    });\n\n    var spf = new Scaleway.Domain.Record(\"spf\", new()\n    {\n        DnsZone = domainName,\n        Type = \"TXT\",\n        Data = cr01.SpfConfig.Apply(spfConfig =\u003e $\"v=spf1 {spfConfig} -all\"),\n    });\n\n    var dkim = new Scaleway.Domain.Record(\"dkim\", new()\n    {\n        DnsZone = domainName,\n        Name = cr01.ProjectId.Apply(projectId =\u003e $\"{projectId}._domainkey\"),\n        Type = \"TXT\",\n        Data = cr01.DkimConfig,\n    });\n\n    var mx = new Scaleway.Domain.Record(\"mx\", new()\n    {\n        DnsZone = domainName,\n        Type = \"MX\",\n        Data = \".\",\n    });\n\n    var dmarc = new Scaleway.Domain.Record(\"dmarc\", new()\n    {\n        DnsZone = domainName,\n        Name = cr01.DmarcName,\n        Type = \"TXT\",\n        Data = cr01.DmarcConfig,\n    });\n\n    var valid = new Scaleway.Tem.DomainValidation(\"valid\", new()\n    {\n        DomainId = cr01.Id,\n        Region = cr01.Region,\n        Timeout = 3600,\n    });\n\n    var webhook = new Scaleway.Tem.Webhook(\"webhook\", new()\n    {\n        Name = \"example-webhook\",\n        DomainId = cr01.Id,\n        EventTypes = new[]\n        {\n            \"email_delivered\",\n            \"email_bounced\",\n        },\n        SnsArn = snsTopic.Arn,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            valid,\n            snsTopic,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/mnq\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/tem\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tdomainName := cfg.Require(\"domainName\")\n\t\t_, err := mnq.NewSns(ctx, \"sns\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsnsCredentials, err := mnq.NewSnsCredentials(ctx, \"sns_credentials\", \u0026mnq.SnsCredentialsArgs{\n\t\t\tPermissions: \u0026mnq.SnsCredentialsPermissionsArgs{\n\t\t\t\tCanManage: 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\tsnsTopic, err := mnq.NewSnsTopic(ctx, \"sns_topic\", \u0026mnq.SnsTopicArgs{\n\t\t\tName:      pulumi.String(\"test-mnq-sns-topic-basic\"),\n\t\t\tAccessKey: snsCredentials.AccessKey,\n\t\t\tSecretKey: snsCredentials.SecretKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcr01, err := tem.NewDomain(ctx, \"cr01\", \u0026tem.DomainArgs{\n\t\t\tName:      pulumi.String(pulumi.String(domainName)),\n\t\t\tAcceptTos: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"spf\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tType:    pulumi.String(\"TXT\"),\n\t\t\tData: cr01.SpfConfig.ApplyT(func(spfConfig string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"v=spf1 %v -all\", spfConfig), 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 = domain.NewRecord(ctx, \"dkim\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tName: cr01.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v._domainkey\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tData: cr01.DkimConfig,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"mx\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tType:    pulumi.String(\"MX\"),\n\t\t\tData:    pulumi.String(\".\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"dmarc\", \u0026domain.RecordArgs{\n\t\t\tDnsZone: pulumi.String(pulumi.String(domainName)),\n\t\t\tName:    cr01.DmarcName,\n\t\t\tType:    pulumi.String(\"TXT\"),\n\t\t\tData:    cr01.DmarcConfig,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvalid, err := tem.NewDomainValidation(ctx, \"valid\", \u0026tem.DomainValidationArgs{\n\t\t\tDomainId: cr01.ID(),\n\t\t\tRegion:   cr01.Region,\n\t\t\tTimeout:  pulumi.Int(3600),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tem.NewWebhook(ctx, \"webhook\", \u0026tem.WebhookArgs{\n\t\t\tName:     pulumi.String(\"example-webhook\"),\n\t\t\tDomainId: cr01.ID(),\n\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"email_delivered\"),\n\t\t\t\tpulumi.String(\"email_bounced\"),\n\t\t\t},\n\t\t\tSnsArn: snsTopic.Arn,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvalid,\n\t\t\tsnsTopic,\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.scaleway.mnq.Sns;\nimport com.pulumi.scaleway.mnq.SnsCredentials;\nimport com.pulumi.scaleway.mnq.SnsCredentialsArgs;\nimport com.pulumi.scaleway.mnq.inputs.SnsCredentialsPermissionsArgs;\nimport com.pulumi.scaleway.mnq.SnsTopic;\nimport com.pulumi.scaleway.mnq.SnsTopicArgs;\nimport com.pulumi.scaleway.tem.Domain;\nimport com.pulumi.scaleway.tem.DomainArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.tem.DomainValidation;\nimport com.pulumi.scaleway.tem.DomainValidationArgs;\nimport com.pulumi.scaleway.tem.Webhook;\nimport com.pulumi.scaleway.tem.WebhookArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var domainName = config.require(\"domainName\");\n        var sns = new Sns(\"sns\");\n\n        var snsCredentials = new SnsCredentials(\"snsCredentials\", SnsCredentialsArgs.builder()\n            .permissions(SnsCredentialsPermissionsArgs.builder()\n                .canManage(true)\n                .build())\n            .build());\n\n        var snsTopic = new SnsTopic(\"snsTopic\", SnsTopicArgs.builder()\n            .name(\"test-mnq-sns-topic-basic\")\n            .accessKey(snsCredentials.accessKey())\n            .secretKey(snsCredentials.secretKey())\n            .build());\n\n        var cr01 = new Domain(\"cr01\", DomainArgs.builder()\n            .name(domainName)\n            .acceptTos(true)\n            .build());\n\n        var spf = new Record(\"spf\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .type(\"TXT\")\n            .data(cr01.spfConfig().applyValue(_spfConfig -\u003e String.format(\"v=spf1 %s -all\", _spfConfig)))\n            .build());\n\n        var dkim = new Record(\"dkim\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .name(cr01.projectId().applyValue(_projectId -\u003e String.format(\"%s._domainkey\", _projectId)))\n            .type(\"TXT\")\n            .data(cr01.dkimConfig())\n            .build());\n\n        var mx = new Record(\"mx\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .type(\"MX\")\n            .data(\".\")\n            .build());\n\n        var dmarc = new Record(\"dmarc\", RecordArgs.builder()\n            .dnsZone(domainName)\n            .name(cr01.dmarcName())\n            .type(\"TXT\")\n            .data(cr01.dmarcConfig())\n            .build());\n\n        var valid = new DomainValidation(\"valid\", DomainValidationArgs.builder()\n            .domainId(cr01.id())\n            .region(cr01.region())\n            .timeout(3600)\n            .build());\n\n        var webhook = new Webhook(\"webhook\", WebhookArgs.builder()\n            .name(\"example-webhook\")\n            .domainId(cr01.id())\n            .eventTypes(            \n                \"email_delivered\",\n                \"email_bounced\")\n            .snsArn(snsTopic.arn())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    valid,\n                    snsTopic)\n                .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  domainName:\n    type: string\nresources:\n  sns:\n    type: scaleway:mnq:Sns\n  snsCredentials:\n    type: scaleway:mnq:SnsCredentials\n    name: sns_credentials\n    properties:\n      permissions:\n        canManage: true\n  snsTopic:\n    type: scaleway:mnq:SnsTopic\n    name: sns_topic\n    properties:\n      name: test-mnq-sns-topic-basic\n      accessKey: ${snsCredentials.accessKey}\n      secretKey: ${snsCredentials.secretKey}\n  cr01:\n    type: scaleway:tem:Domain\n    properties:\n      name: ${domainName}\n      acceptTos: true\n  spf:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      type: TXT\n      data: v=spf1 ${cr01.spfConfig} -all\n  dkim:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      name: ${cr01.projectId}._domainkey\n      type: TXT\n      data: ${cr01.dkimConfig}\n  mx:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      type: MX\n      data: .\n  dmarc:\n    type: scaleway:domain:Record\n    properties:\n      dnsZone: ${domainName}\n      name: ${cr01.dmarcName}\n      type: TXT\n      data: ${cr01.dmarcConfig}\n  valid:\n    type: scaleway:tem:DomainValidation\n    properties:\n      domainId: ${cr01.id}\n      region: ${cr01.region}\n      timeout: 3600\n  webhook:\n    type: scaleway:tem:Webhook\n    properties:\n      name: example-webhook\n      domainId: ${cr01.id}\n      eventTypes:\n        - email_delivered\n        - email_bounced\n      snsArn: ${snsTopic.arn}\n    options:\n      dependsOn:\n        - ${valid}\n        - ${snsTopic}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWebhooks can be imported using the {region}/{id}, e.g.\n\n```sh\n$ pulumi import scaleway:index/temWebhook:TemWebhook main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the webhook's creation (RFC 3339 format).\n"
                },
                "domainId": {
                    "type": "string",
                    "description": "The ID of the domain the webhook is associated with.\n"
                },
                "eventTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of event types that trigger the webhook.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the webhook. Defaults to an autogenerated name if not provided.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The ID of the organization the webhook belongs to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the webhook is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": ". The region in which the webhook should be created.\n"
                },
                "snsArn": {
                    "type": "string",
                    "description": "The Amazon Resource Name (ARN) of the SNS topic.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the webhook's last update (RFC 3339 format).\n"
                }
            },
            "required": [
                "createdAt",
                "domainId",
                "eventTypes",
                "name",
                "organizationId",
                "projectId",
                "snsArn",
                "updatedAt"
            ],
            "inputProperties": {
                "domainId": {
                    "type": "string",
                    "description": "The ID of the domain the webhook is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "eventTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of event types that trigger the webhook.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the webhook. Defaults to an autogenerated name if not provided.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the webhook is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": ". The region in which the webhook should be created.\n",
                    "willReplaceOnChanges": true
                },
                "snsArn": {
                    "type": "string",
                    "description": "The Amazon Resource Name (ARN) of the SNS topic.\n"
                }
            },
            "requiredInputs": [
                "domainId",
                "eventTypes",
                "snsArn"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TemWebhook resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the webhook's creation (RFC 3339 format).\n"
                    },
                    "domainId": {
                        "type": "string",
                        "description": "The ID of the domain the webhook is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "eventTypes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of event types that trigger the webhook.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the webhook. Defaults to an autogenerated name if not provided.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The ID of the organization the webhook belongs to.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project the webhook is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": ". The region in which the webhook should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "snsArn": {
                        "type": "string",
                        "description": "The Amazon Resource Name (ARN) of the SNS topic.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the webhook's last update (RFC 3339 format).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/temwebhook.TemWebhook has been deprecated in favor of scaleway.tem/webhook.Webhook"
        },
        "scaleway:index/vpc:Vpc": {
            "description": "Creates and manages Scaleway Virtual Private Clouds.\nFor more information, see [the main documentation](https://www.scaleway.com/en/docs/vpc/concepts/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {\n    name: \"my-vpc\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\",\n    name=\"my-vpc\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my-vpc\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my-vpc\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my-vpc\")\n            .tags(            \n                \"demo\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my-vpc\n      tags:\n        - demo\n        - terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enable routing\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {\n    name: \"my-vpc\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n        \"routing\",\n    ],\n    enableRouting: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\",\n    name=\"my-vpc\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n        \"routing\",\n    ],\n    enable_routing=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my-vpc\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n            \"routing\",\n        },\n        EnableRouting = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my-vpc\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t\tpulumi.String(\"routing\"),\n\t\t\t},\n\t\t\tEnableRouting: 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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my-vpc\")\n            .tags(            \n                \"demo\",\n                \"terraform\",\n                \"routing\")\n            .enableRouting(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my-vpc\n      tags:\n        - demo\n        - terraform\n        - routing\n      enableRouting: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPCs can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpc:Vpc vpc_demo fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of VPC's creation (RFC 3339 format).\n"
                },
                "enableCustomRoutesPropagation": {
                    "type": "boolean",
                    "description": "Defines whether the VPC advertises custom routes between its Private Networks. Note that you will not be able to deactivate it afterwards.\n"
                },
                "enableRouting": {
                    "type": "boolean",
                    "description": "Enable routing between Private Networks in the VPC. Note that you will not be able to deactivate it afterwards.\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Defines whether the VPC is the default one for its Project.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the VPC. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the VPC is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the VPC is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the VPC.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the VPC.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of VPC's last update (RFC 3339 format).\n"
                }
            },
            "required": [
                "createdAt",
                "enableCustomRoutesPropagation",
                "enableRouting",
                "isDefault",
                "name",
                "organizationId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "enableCustomRoutesPropagation": {
                    "type": "boolean",
                    "description": "Defines whether the VPC advertises custom routes between its Private Networks. Note that you will not be able to deactivate it afterwards.\n"
                },
                "enableRouting": {
                    "type": "boolean",
                    "description": "Enable routing between Private Networks in the VPC. Note that you will not be able to deactivate it afterwards.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the VPC. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the VPC is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the VPC.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the VPC.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Vpc resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of VPC's creation (RFC 3339 format).\n"
                    },
                    "enableCustomRoutesPropagation": {
                        "type": "boolean",
                        "description": "Defines whether the VPC advertises custom routes between its Private Networks. Note that you will not be able to deactivate it afterwards.\n"
                    },
                    "enableRouting": {
                        "type": "boolean",
                        "description": "Enable routing between Private Networks in the VPC. Note that you will not be able to deactivate it afterwards.\n"
                    },
                    "isDefault": {
                        "type": "boolean",
                        "description": "Defines whether the VPC is the default one for its Project.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the VPC. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the VPC is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the VPC is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the VPC.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags to associate with the VPC.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of VPC's last update (RFC 3339 format).\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpc.Vpc has been deprecated in favor of scaleway.network/vpc.Vpc"
        },
        "scaleway:index/vpcGatewayNetwork:VpcGatewayNetwork": {
            "description": "Creates and manages GatewayNetworks (connections between a Public Gateway and a Private Network).\n\nIt allows the attachment of Private Networks to Public Gateways.\nFor more information, see [the API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#step-3-attach-private-networks-to-the-vpc-public-gateway).\n\n## Example Usage\n\n### Create a GatewayNetwork with IPAM configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"pn_test_network\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst pg01 = new scaleway.network.PublicGateway(\"pg01\", {\n    name: \"foobar\",\n    type: \"VPC-GW-S\",\n});\nconst main = new scaleway.network.GatewayNetwork(\"main\", {\n    gatewayId: pg01.id,\n    privateNetworkId: pn01.id,\n    enableMasquerade: true,\n    ipamConfigs: [{\n        pushDefaultRoute: true,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"pn_test_network\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\npg01 = scaleway.network.PublicGateway(\"pg01\",\n    name=\"foobar\",\n    type=\"VPC-GW-S\")\nmain = scaleway.network.GatewayNetwork(\"main\",\n    gateway_id=pg01.id,\n    private_network_id=pn01.id,\n    enable_masquerade=True,\n    ipam_configs=[{\n        \"push_default_route\": True,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"pn_test_network\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var pg01 = new Scaleway.Network.PublicGateway(\"pg01\", new()\n    {\n        Name = \"foobar\",\n        Type = \"VPC-GW-S\",\n    });\n\n    var main = new Scaleway.Network.GatewayNetwork(\"main\", new()\n    {\n        GatewayId = pg01.Id,\n        PrivateNetworkId = pn01.Id,\n        EnableMasquerade = true,\n        IpamConfigs = new[]\n        {\n            new Scaleway.Network.Inputs.GatewayNetworkIpamConfigArgs\n            {\n                PushDefaultRoute = true,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"pn_test_network\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpg01, err := network.NewPublicGateway(ctx, \"pg01\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewGatewayNetwork(ctx, \"main\", \u0026network.GatewayNetworkArgs{\n\t\t\tGatewayId:        pg01.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t\tIpamConfigs: network.GatewayNetworkIpamConfigArray{\n\t\t\t\t\u0026network.GatewayNetworkIpamConfigArgs{\n\t\t\t\t\tPushDefaultRoute: pulumi.Bool(true),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport com.pulumi.scaleway.network.GatewayNetwork;\nimport com.pulumi.scaleway.network.GatewayNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.GatewayNetworkIpamConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"pn_test_network\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        var pg01 = new PublicGateway(\"pg01\", PublicGatewayArgs.builder()\n            .name(\"foobar\")\n            .type(\"VPC-GW-S\")\n            .build());\n\n        var main = new GatewayNetwork(\"main\", GatewayNetworkArgs.builder()\n            .gatewayId(pg01.id())\n            .privateNetworkId(pn01.id())\n            .enableMasquerade(true)\n            .ipamConfigs(GatewayNetworkIpamConfigArgs.builder()\n                .pushDefaultRoute(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: pn_test_network\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  pg01:\n    type: scaleway:network:PublicGateway\n    properties:\n      name: foobar\n      type: VPC-GW-S\n  main:\n    type: scaleway:network:GatewayNetwork\n    properties:\n      gatewayId: ${pg01.id}\n      privateNetworkId: ${pn01.id}\n      enableMasquerade: true\n      ipamConfigs:\n        - pushDefaultRoute: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a GatewayNetwork with a booked IPAM IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"my vpc\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"pn_test_network\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.64.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\nconst pg01 = new scaleway.network.PublicGateway(\"pg01\", {\n    name: \"foobar\",\n    type: \"VPC-GW-S\",\n});\nconst main = new scaleway.network.GatewayNetwork(\"main\", {\n    gatewayId: pg01.id,\n    privateNetworkId: pn01.id,\n    enableMasquerade: true,\n    ipamConfigs: [{\n        pushDefaultRoute: true,\n        ipamIpId: ip01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"my vpc\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"pn_test_network\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.64.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\npg01 = scaleway.network.PublicGateway(\"pg01\",\n    name=\"foobar\",\n    type=\"VPC-GW-S\")\nmain = scaleway.network.GatewayNetwork(\"main\",\n    gateway_id=pg01.id,\n    private_network_id=pn01.id,\n    enable_masquerade=True,\n    ipam_configs=[{\n        \"push_default_route\": True,\n        \"ipam_ip_id\": ip01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"my vpc\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"pn_test_network\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.64.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n    var pg01 = new Scaleway.Network.PublicGateway(\"pg01\", new()\n    {\n        Name = \"foobar\",\n        Type = \"VPC-GW-S\",\n    });\n\n    var main = new Scaleway.Network.GatewayNetwork(\"main\", new()\n    {\n        GatewayId = pg01.Id,\n        PrivateNetworkId = pn01.Id,\n        EnableMasquerade = true,\n        IpamConfigs = new[]\n        {\n            new Scaleway.Network.Inputs.GatewayNetworkIpamConfigArgs\n            {\n                PushDefaultRoute = true,\n                IpamIpId = ip01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"pn_test_network\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.64.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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\tpg01, err := network.NewPublicGateway(ctx, \"pg01\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewGatewayNetwork(ctx, \"main\", \u0026network.GatewayNetworkArgs{\n\t\t\tGatewayId:        pg01.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t\tIpamConfigs: network.GatewayNetworkIpamConfigArray{\n\t\t\t\t\u0026network.GatewayNetworkIpamConfigArgs{\n\t\t\t\t\tPushDefaultRoute: pulumi.Bool(true),\n\t\t\t\t\tIpamIpId:         ip01.ID(),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport com.pulumi.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport com.pulumi.scaleway.network.GatewayNetwork;\nimport com.pulumi.scaleway.network.GatewayNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.GatewayNetworkIpamConfigArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"my vpc\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"pn_test_network\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .address(\"172.16.64.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n        var pg01 = new PublicGateway(\"pg01\", PublicGatewayArgs.builder()\n            .name(\"foobar\")\n            .type(\"VPC-GW-S\")\n            .build());\n\n        var main = new GatewayNetwork(\"main\", GatewayNetworkArgs.builder()\n            .gatewayId(pg01.id())\n            .privateNetworkId(pn01.id())\n            .enableMasquerade(true)\n            .ipamConfigs(GatewayNetworkIpamConfigArgs.builder()\n                .pushDefaultRoute(true)\n                .ipamIpId(ip01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: my vpc\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: pn_test_network\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.64.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  pg01:\n    type: scaleway:network:PublicGateway\n    properties:\n      name: foobar\n      type: VPC-GW-S\n  main:\n    type: scaleway:network:GatewayNetwork\n    properties:\n      gatewayId: ${pg01.id}\n      privateNetworkId: ${pn01.id}\n      enableMasquerade: true\n      ipamConfigs:\n        - pushDefaultRoute: true\n          ipamIpId: ${ip01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewayNetwork can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcGatewayNetwork:VpcGatewayNetwork main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cleanupDhcp": {
                    "type": "boolean",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether to remove DHCP configuration on this GatewayNetwork upon destroy. Requires DHCP ID.\n",
                    "deprecationMessage": "DHCP cleanup is no longer needed. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the GatewayNetwork.\n"
                },
                "dhcpId": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. The ID of the Public Gateway DHCP configuration. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "DHCP configuration is no longer managed separately. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "enableDhcp": {
                    "type": "boolean",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether a DHCP configuration should be enabled on this GatewayNetwork. Requires a DHCP ID.\n",
                    "deprecationMessage": "DHCP is now managed automatically. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "enableMasquerade": {
                    "type": "boolean",
                    "description": "Whether masquerade (dynamic NAT) should be enabled on this GatewayNetwork.\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "The ID of the Public Gateway.\n"
                },
                "ipamConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcGatewayNetworkIpamConfig:VpcGatewayNetworkIpamConfig"
                    },
                    "description": "Auto-configure the GatewayNetwork using Scaleway's IPAM (IP address management service). Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the GatewayNetwork.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcGatewayNetworkPrivateIp:VpcGatewayNetworkPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n"
                },
                "staticAddress": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Enable DHCP configuration on this GatewayNetwork. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "status": {
                    "type": "string",
                    "description": "The status of the Public Gateway's connection to the Private Network.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the GatewayNetwork.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the gateway network should be created.\n\n\u003e **Important:**\nIn 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP fields are now deprecated.\nFor more information, please refer to the dedicated guide.\n"
                }
            },
            "required": [
                "cleanupDhcp",
                "createdAt",
                "gatewayId",
                "ipamConfigs",
                "macAddress",
                "privateIps",
                "privateNetworkId",
                "staticAddress",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "cleanupDhcp": {
                    "type": "boolean",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether to remove DHCP configuration on this GatewayNetwork upon destroy. Requires DHCP ID.\n",
                    "deprecationMessage": "DHCP cleanup is no longer needed. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "dhcpId": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. The ID of the Public Gateway DHCP configuration. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "DHCP configuration is no longer managed separately. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "enableDhcp": {
                    "type": "boolean",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether a DHCP configuration should be enabled on this GatewayNetwork. Requires a DHCP ID.\n",
                    "deprecationMessage": "DHCP is now managed automatically. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "enableMasquerade": {
                    "type": "boolean",
                    "description": "Whether masquerade (dynamic NAT) should be enabled on this GatewayNetwork.\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "The ID of the Public Gateway.\n",
                    "willReplaceOnChanges": true
                },
                "ipamConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcGatewayNetworkIpamConfig:VpcGatewayNetworkIpamConfig"
                    },
                    "description": "Auto-configure the GatewayNetwork using Scaleway's IPAM (IP address management service). Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcGatewayNetworkPrivateIp:VpcGatewayNetworkPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the Private Network.\n",
                    "willReplaceOnChanges": true
                },
                "staticAddress": {
                    "type": "string",
                    "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Enable DHCP configuration on this GatewayNetwork. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                    "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the gateway network should be created.\n\n\u003e **Important:**\nIn 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP fields are now deprecated.\nFor more information, please refer to the dedicated guide.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "gatewayId",
                "privateNetworkId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcGatewayNetwork resources.\n",
                "properties": {
                    "cleanupDhcp": {
                        "type": "boolean",
                        "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether to remove DHCP configuration on this GatewayNetwork upon destroy. Requires DHCP ID.\n",
                        "deprecationMessage": "DHCP cleanup is no longer needed. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the GatewayNetwork.\n"
                    },
                    "dhcpId": {
                        "type": "string",
                        "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. The ID of the Public Gateway DHCP configuration. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                        "deprecationMessage": "DHCP configuration is no longer managed separately. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                    },
                    "enableDhcp": {
                        "type": "boolean",
                        "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Whether a DHCP configuration should be enabled on this GatewayNetwork. Requires a DHCP ID.\n",
                        "deprecationMessage": "DHCP is now managed automatically. Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                    },
                    "enableMasquerade": {
                        "type": "boolean",
                        "description": "Whether masquerade (dynamic NAT) should be enabled on this GatewayNetwork.\n"
                    },
                    "gatewayId": {
                        "type": "string",
                        "description": "The ID of the Public Gateway.\n",
                        "willReplaceOnChanges": true
                    },
                    "ipamConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/VpcGatewayNetworkIpamConfig:VpcGatewayNetworkIpamConfig"
                        },
                        "description": "Auto-configure the GatewayNetwork using Scaleway's IPAM (IP address management service). Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n"
                    },
                    "macAddress": {
                        "type": "string",
                        "description": "The MAC address of the GatewayNetwork.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/VpcGatewayNetworkPrivateIp:VpcGatewayNetworkPrivateIp"
                        },
                        "description": "The private IPv4 address associated with the resource.\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the Private Network.\n",
                        "willReplaceOnChanges": true
                    },
                    "staticAddress": {
                        "type": "string",
                        "description": "Please use \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e. Enable DHCP configuration on this GatewayNetwork. Only one of \u003cspan pulumi-lang-nodejs=\"`dhcpId`\" pulumi-lang-dotnet=\"`DhcpId`\" pulumi-lang-go=\"`dhcpId`\" pulumi-lang-python=\"`dhcp_id`\" pulumi-lang-yaml=\"`dhcpId`\" pulumi-lang-java=\"`dhcpId`\"\u003e`dhcpId`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticAddress`\" pulumi-lang-dotnet=\"`StaticAddress`\" pulumi-lang-go=\"`staticAddress`\" pulumi-lang-python=\"`static_address`\" pulumi-lang-yaml=\"`staticAddress`\" pulumi-lang-java=\"`staticAddress`\"\u003e`staticAddress`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipamConfig`\" pulumi-lang-dotnet=\"`IpamConfig`\" pulumi-lang-go=\"`ipamConfig`\" pulumi-lang-python=\"`ipam_config`\" pulumi-lang-yaml=\"`ipamConfig`\" pulumi-lang-java=\"`ipamConfig`\"\u003e`ipamConfig`\u003c/span\u003e should be specified.\n",
                        "deprecationMessage": "Please use\u003cspan pulumi-lang-nodejs=\" ipamConfig \" pulumi-lang-dotnet=\" IpamConfig \" pulumi-lang-go=\" ipamConfig \" pulumi-lang-python=\" ipam_config \" pulumi-lang-yaml=\" ipamConfig \" pulumi-lang-java=\" ipamConfig \"\u003e ipamConfig \u003c/span\u003einstead."
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the Public Gateway's connection to the Private Network.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the GatewayNetwork.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the gateway network should be created.\n\n\u003e **Important:**\nIn 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP fields are now deprecated.\nFor more information, please refer to the dedicated guide.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcgatewaynetwork.VpcGatewayNetwork has been deprecated in favor of scaleway.network/gatewaynetwork.GatewayNetwork"
        },
        "scaleway:index/vpcPrivateNetwork:VpcPrivateNetwork": {
            "description": "Creates and manages Scaleway VPC Private Networks.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/vpc/#private-networks-ac2df4).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pnPriv = new scaleway.network.PrivateNetwork(\"pn_priv\", {\n    name: \"subnet_demo\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn_priv = scaleway.network.PrivateNetwork(\"pn_priv\",\n    name=\"subnet_demo\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pnPriv = new Scaleway.Network.PrivateNetwork(\"pn_priv\", new()\n    {\n        Name = \"subnet_demo\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewPrivateNetwork(ctx, \"pn_priv\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"subnet_demo\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pnPriv = new PrivateNetwork(\"pnPriv\", PrivateNetworkArgs.builder()\n            .name(\"subnet_demo\")\n            .tags(            \n                \"demo\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pnPriv:\n    type: scaleway:network:PrivateNetwork\n    name: pn_priv\n    properties:\n      name: subnet_demo\n      tags:\n        - demo\n        - terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With subnets\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pnPriv = new scaleway.network.PrivateNetwork(\"pn_priv\", {\n    name: \"subnet_demo\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n    ],\n    ipv4Subnet: {\n        subnet: \"192.168.0.0/24\",\n    },\n    ipv6Subnets: [\n        {\n            subnet: \"fd46:78ab:30b8:177c::/64\",\n        },\n        {\n            subnet: \"fd46:78ab:30b8:c7df::/64\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn_priv = scaleway.network.PrivateNetwork(\"pn_priv\",\n    name=\"subnet_demo\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n    ],\n    ipv4_subnet={\n        \"subnet\": \"192.168.0.0/24\",\n    },\n    ipv6_subnets=[\n        {\n            \"subnet\": \"fd46:78ab:30b8:177c::/64\",\n        },\n        {\n            \"subnet\": \"fd46:78ab:30b8:c7df::/64\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pnPriv = new Scaleway.Network.PrivateNetwork(\"pn_priv\", new()\n    {\n        Name = \"subnet_demo\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n        },\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"192.168.0.0/24\",\n        },\n        Ipv6Subnets = new[]\n        {\n            new Scaleway.Network.Inputs.PrivateNetworkIpv6SubnetArgs\n            {\n                Subnet = \"fd46:78ab:30b8:177c::/64\",\n            },\n            new Scaleway.Network.Inputs.PrivateNetworkIpv6SubnetArgs\n            {\n                Subnet = \"fd46:78ab:30b8:c7df::/64\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewPrivateNetwork(ctx, \"pn_priv\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"subnet_demo\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"192.168.0.0/24\"),\n\t\t\t},\n\t\t\tIpv6Subnets: network.PrivateNetworkIpv6SubnetArray{\n\t\t\t\t\u0026network.PrivateNetworkIpv6SubnetArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"fd46:78ab:30b8:177c::/64\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.PrivateNetworkIpv6SubnetArgs{\n\t\t\t\t\tSubnet: pulumi.String(\"fd46:78ab:30b8:c7df::/64\"),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv6SubnetArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pnPriv = new PrivateNetwork(\"pnPriv\", PrivateNetworkArgs.builder()\n            .name(\"subnet_demo\")\n            .tags(            \n                \"demo\",\n                \"terraform\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"192.168.0.0/24\")\n                .build())\n            .ipv6Subnets(            \n                PrivateNetworkIpv6SubnetArgs.builder()\n                    .subnet(\"fd46:78ab:30b8:177c::/64\")\n                    .build(),\n                PrivateNetworkIpv6SubnetArgs.builder()\n                    .subnet(\"fd46:78ab:30b8:c7df::/64\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pnPriv:\n    type: scaleway:network:PrivateNetwork\n    name: pn_priv\n    properties:\n      name: subnet_demo\n      tags:\n        - demo\n        - terraform\n      ipv4Subnet:\n        subnet: 192.168.0.0/24\n      ipv6Subnets:\n        - subnet: fd46:78ab:30b8:177c::/64\n        - subnet: fd46:78ab:30b8:c7df::/64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivate Networks can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPrivateNetwork:VpcPrivateNetwork main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the subnet.\n"
                },
                "enableDefaultRoutePropagation": {
                    "type": "boolean",
                    "description": "Defines whether default v4 and v6 routes are propagated for this Private Network.\n"
                },
                "ipv4Subnet": {
                    "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv4Subnet:VpcPrivateNetworkIpv4Subnet",
                    "description": "The IPv4 subnet to associate with the Private Network.\n"
                },
                "ipv6Subnets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv6Subnet:VpcPrivateNetworkIpv6Subnet"
                    },
                    "description": "The IPv6 subnets to associate with the private network.\n"
                },
                "isRegional": {
                    "type": "boolean",
                    "description": "Private Networks are now all necessarily regional.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in the next major version"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Private Network. If not provided, it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the Private Network is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the private network is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Private Network.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Private Network.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the subnet.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC in which to create the Private Network.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "Use \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 instead.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in the next major version, please use \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 instead"
                }
            },
            "required": [
                "createdAt",
                "enableDefaultRoutePropagation",
                "ipv4Subnet",
                "ipv6Subnets",
                "isRegional",
                "name",
                "organizationId",
                "projectId",
                "updatedAt",
                "vpcId",
                "zone"
            ],
            "inputProperties": {
                "enableDefaultRoutePropagation": {
                    "type": "boolean",
                    "description": "Defines whether default v4 and v6 routes are propagated for this Private Network.\n"
                },
                "ipv4Subnet": {
                    "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv4Subnet:VpcPrivateNetworkIpv4Subnet",
                    "description": "The IPv4 subnet to associate with the Private Network.\n"
                },
                "ipv6Subnets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv6Subnet:VpcPrivateNetworkIpv6Subnet"
                    },
                    "description": "The IPv6 subnets to associate with the private network.\n"
                },
                "isRegional": {
                    "type": "boolean",
                    "description": "Private Networks are now all necessarily regional.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in the next major version"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Private Network. If not provided, it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the private network is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Private Network.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Private Network.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC in which to create the Private Network.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "Use \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 instead.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in the next major version, please use \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 instead"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPrivateNetwork resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the subnet.\n"
                    },
                    "enableDefaultRoutePropagation": {
                        "type": "boolean",
                        "description": "Defines whether default v4 and v6 routes are propagated for this Private Network.\n"
                    },
                    "ipv4Subnet": {
                        "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv4Subnet:VpcPrivateNetworkIpv4Subnet",
                        "description": "The IPv4 subnet to associate with the Private Network.\n"
                    },
                    "ipv6Subnets": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/VpcPrivateNetworkIpv6Subnet:VpcPrivateNetworkIpv6Subnet"
                        },
                        "description": "The IPv6 subnets to associate with the private network.\n"
                    },
                    "isRegional": {
                        "type": "boolean",
                        "description": "Private Networks are now all necessarily regional.\n",
                        "deprecationMessage": "This field is deprecated and will be removed in the next major version"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Private Network. If not provided, it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the Private Network is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the private network is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the Private Network.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Private Network.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the subnet.\n"
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "The VPC in which to create the Private Network.\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "Use \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 instead.\n",
                        "deprecationMessage": "This field is deprecated and will be removed in the next major version, please use \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 instead"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcprivatenetwork.VpcPrivateNetwork has been deprecated in favor of scaleway.network/privatenetwork.PrivateNetwork"
        },
        "scaleway:index/vpcPublicGateway:VpcPublicGateway": {
            "description": "Creates and manages Scaleway Public Gateways.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.PublicGateway(\"main\", {\n    name: \"public_gateway_demo\",\n    type: \"VPC-GW-S\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.PublicGateway(\"main\",\n    name=\"public_gateway_demo\",\n    type=\"VPC-GW-S\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.PublicGateway(\"main\", new()\n    {\n        Name = \"public_gateway_demo\",\n        Type = \"VPC-GW-S\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewPublicGateway(ctx, \"main\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"public_gateway_demo\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new PublicGateway(\"main\", PublicGatewayArgs.builder()\n            .name(\"public_gateway_demo\")\n            .type(\"VPC-GW-S\")\n            .tags(            \n                \"demo\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:PublicGateway\n    properties:\n      name: public_gateway_demo\n      type: VPC-GW-S\n      tags:\n        - demo\n        - terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With bastion\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\nimport * as std from \"@pulumi/std\";\n\nconst key1 = new scaleway.iam.SshKey(\"key1\", {\n    name: \"key1\",\n    publicKey: std.file({\n        input: \"~/.ssh/id_rsa.pub\",\n    }).result,\n});\nconst key2 = new scaleway.iam.SshKey(\"key2\", {\n    name: \"key2\",\n    publicKey: std.file({\n        input: \"~/.ssh/another_key.pub\",\n    }).result,\n});\nconst sshKeysHash = std.sha256({\n    input: std.join({\n        separator: \",\",\n        input: [\n            key1.publicKey,\n            key2.publicKey,\n        ],\n    }).result,\n}).result;\nconst main = new scaleway.network.PublicGateway(\"main\", {\n    name: \"public_gateway_demo\",\n    type: \"VPC-GW-S\",\n    tags: [\n        \"demo\",\n        \"terraform\",\n    ],\n    bastionEnabled: true,\n    bastionPort: 61000,\n    refreshSshKeys: sshKeysHash,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_scaleway as scaleway\n\nkey1 = scaleway.iam.SshKey(\"key1\",\n    name=\"key1\",\n    public_key=std.file(input=\"~/.ssh/id_rsa.pub\")[\"result\"])\nkey2 = scaleway.iam.SshKey(\"key2\",\n    name=\"key2\",\n    public_key=std.file(input=\"~/.ssh/another_key.pub\")[\"result\"])\nssh_keys_hash = std.sha256(input=std.join(separator=\",\",\n    input=[\n        key1.public_key,\n        key2.public_key,\n    ])[\"result\"])[\"result\"]\nmain = scaleway.network.PublicGateway(\"main\",\n    name=\"public_gateway_demo\",\n    type=\"VPC-GW-S\",\n    tags=[\n        \"demo\",\n        \"terraform\",\n    ],\n    bastion_enabled=True,\n    bastion_port=61000,\n    refresh_ssh_keys=ssh_keys_hash)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var key1 = new Scaleway.Iam.SshKey(\"key1\", new()\n    {\n        Name = \"key1\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"~/.ssh/id_rsa.pub\",\n        }).Result,\n    });\n\n    var key2 = new Scaleway.Iam.SshKey(\"key2\", new()\n    {\n        Name = \"key2\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"~/.ssh/another_key.pub\",\n        }).Result,\n    });\n\n    var sshKeysHash = Std.Sha256.Invoke(new()\n    {\n        Input = Std.Join.Invoke(new()\n        {\n            Separator = \",\",\n            Input = new[]\n            {\n                key1.PublicKey,\n                key2.PublicKey,\n            },\n        }).Result,\n    }).Result;\n\n    var main = new Scaleway.Network.PublicGateway(\"main\", new()\n    {\n        Name = \"public_gateway_demo\",\n        Type = \"VPC-GW-S\",\n        Tags = new[]\n        {\n            \"demo\",\n            \"terraform\",\n        },\n        BastionEnabled = true,\n        BastionPort = 61000,\n        RefreshSshKeys = sshKeysHash,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\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\": \"~/.ssh/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey1, err := iam.NewSshKey(ctx, \"key1\", \u0026iam.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"key1\"),\n\t\t\tPublicKey: invokeFile.Result,\n\t\t})\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\": \"~/.ssh/another_key.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey2, err := iam.NewSshKey(ctx, \"key2\", \u0026iam.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"key2\"),\n\t\t\tPublicKey: invokeFile1.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsshKeysHash := std.Sha256(ctx, map[string]interface{}{\n\t\t\t\"input\": std.Join(ctx, map[string]interface{}{\n\t\t\t\t\"separator\": \",\",\n\t\t\t\t\"input\": pulumi.StringArray{\n\t\t\t\t\tkey1.PublicKey,\n\t\t\t\t\tkey2.PublicKey,\n\t\t\t\t},\n\t\t\t}, nil).Result,\n\t\t}, nil).Result\n\t\t_, err = network.NewPublicGateway(ctx, \"main\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"public_gateway_demo\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t},\n\t\t\tBastionEnabled: pulumi.Bool(true),\n\t\t\tBastionPort:    pulumi.Int(61000),\n\t\t\tRefreshSshKeys: pulumi.Any(sshKeysHash),\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.scaleway.iam.SshKey;\nimport com.pulumi.scaleway.iam.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 key1 = new SshKey(\"key1\", SshKeyArgs.builder()\n            .name(\"key1\")\n            .publicKey(StdFunctions.file(Map.of(\"input\", \"~/.ssh/id_rsa.pub\")).result())\n            .build());\n\n        var key2 = new SshKey(\"key2\", SshKeyArgs.builder()\n            .name(\"key2\")\n            .publicKey(StdFunctions.file(Map.of(\"input\", \"~/.ssh/another_key.pub\")).result())\n            .build());\n\n        final var sshKeysHash = StdFunctions.sha256(Map.of(\"input\", StdFunctions.join(Map.ofEntries(\n            Map.entry(\"separator\", \",\"),\n            Map.entry(\"input\", Arrays.asList(            \n                key1.publicKey(),\n                key2.publicKey()))\n        )).result())).result();\n\n        var main = new PublicGateway(\"main\", PublicGatewayArgs.builder()\n            .name(\"public_gateway_demo\")\n            .type(\"VPC-GW-S\")\n            .tags(            \n                \"demo\",\n                \"terraform\")\n            .bastionEnabled(true)\n            .bastionPort(61000)\n            .refreshSshKeys(sshKeysHash)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  key1:\n    type: scaleway:iam:SshKey\n    properties:\n      name: key1\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ~/.ssh/id_rsa.pub\n          return: result\n  key2:\n    type: scaleway:iam:SshKey\n    properties:\n      name: key2\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ~/.ssh/another_key.pub\n          return: result\n  main:\n    type: scaleway:network:PublicGateway\n    properties:\n      name: public_gateway_demo\n      type: VPC-GW-S\n      tags:\n        - demo\n        - terraform\n      bastionEnabled: true\n      bastionPort: 61000\n      refreshSshKeys: ${sshKeysHash}\nvariables:\n  sshKeysHash:\n    fn::invoke:\n      function: std:sha256\n      arguments:\n        input:\n          fn::invoke:\n            function: std:join\n            arguments:\n              separator: ','\n              input:\n                - ${key1.publicKey}\n                - ${key2.publicKey}\n            return: result\n      return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateways can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGateway:VpcPublicGateway main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "allowedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set a definitive list of IP ranges (in CIDR notation) allowed to connect to the SSH bastion.\n"
                },
                "bandwidth": {
                    "type": "integer",
                    "description": "The bandwidth available of the gateway"
                },
                "bastionEnabled": {
                    "type": "boolean",
                    "description": "Enable SSH bastion on the gateway.\n"
                },
                "bastionPort": {
                    "type": "integer",
                    "description": "The port on which the SSH bastion will listen.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Public Gateway.\n"
                },
                "enableSmtp": {
                    "type": "boolean",
                    "description": "Enable SMTP on the gateway.\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "Attach an existing flexible IP to the gateway.\n"
                },
                "moveToIpam": {
                    "type": "boolean",
                    "description": "Put a Public Gateway in IPAM mode, so that it can be used with the Public Gateways API v2",
                    "deprecationMessage": "All gateways now use IPAM. This field is no longer needed"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the Public Gateway. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the Public Gateway is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the public gateway is associated with.\n"
                },
                "refreshSshKeys": {
                    "type": "string",
                    "description": "Trigger a refresh of the SSH keys on the Public Gateway by changing this field's value.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the public gateway.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the Public Gateway.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The gateway type.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Public Gateway.\n"
                },
                "upstreamDnsServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Override the gateway's default recursive DNS servers, if DNS features are enabled.\n",
                    "deprecationMessage": "This field is no longer supported in the v2 API"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway should be created.\n"
                }
            },
            "required": [
                "allowedIpRanges",
                "bandwidth",
                "bastionPort",
                "createdAt",
                "enableSmtp",
                "ipId",
                "name",
                "organizationId",
                "projectId",
                "status",
                "type",
                "updatedAt",
                "upstreamDnsServers"
            ],
            "inputProperties": {
                "allowedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set a definitive list of IP ranges (in CIDR notation) allowed to connect to the SSH bastion.\n"
                },
                "bastionEnabled": {
                    "type": "boolean",
                    "description": "Enable SSH bastion on the gateway.\n"
                },
                "bastionPort": {
                    "type": "integer",
                    "description": "The port on which the SSH bastion will listen.\n"
                },
                "enableSmtp": {
                    "type": "boolean",
                    "description": "Enable SMTP on the gateway.\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "Attach an existing flexible IP to the gateway.\n",
                    "willReplaceOnChanges": true
                },
                "moveToIpam": {
                    "type": "boolean",
                    "description": "Put a Public Gateway in IPAM mode, so that it can be used with the Public Gateways API v2",
                    "deprecationMessage": "All gateways now use IPAM. This field is no longer needed"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the Public Gateway. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the public gateway is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "refreshSshKeys": {
                    "type": "string",
                    "description": "Trigger a refresh of the SSH keys on the Public Gateway by changing this field's value.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the Public Gateway.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The gateway type.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGateway resources.\n",
                "properties": {
                    "allowedIpRanges": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Set a definitive list of IP ranges (in CIDR notation) allowed to connect to the SSH bastion.\n"
                    },
                    "bandwidth": {
                        "type": "integer",
                        "description": "The bandwidth available of the gateway"
                    },
                    "bastionEnabled": {
                        "type": "boolean",
                        "description": "Enable SSH bastion on the gateway.\n"
                    },
                    "bastionPort": {
                        "type": "integer",
                        "description": "The port on which the SSH bastion will listen.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Public Gateway.\n"
                    },
                    "enableSmtp": {
                        "type": "boolean",
                        "description": "Enable SMTP on the gateway.\n"
                    },
                    "ipId": {
                        "type": "string",
                        "description": "Attach an existing flexible IP to the gateway.\n",
                        "willReplaceOnChanges": true
                    },
                    "moveToIpam": {
                        "type": "boolean",
                        "description": "Put a Public Gateway in IPAM mode, so that it can be used with the Public Gateways API v2",
                        "deprecationMessage": "All gateways now use IPAM. This field is no longer needed"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the Public Gateway. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the Public Gateway is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the public gateway is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "refreshSshKeys": {
                        "type": "string",
                        "description": "Trigger a refresh of the SSH keys on the Public Gateway by changing this field's value.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the public gateway.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags to associate with the Public Gateway.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The gateway type.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Public Gateway.\n"
                    },
                    "upstreamDnsServers": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Override the gateway's default recursive DNS servers, if DNS features are enabled.\n",
                        "deprecationMessage": "This field is no longer supported in the v2 API"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgateway.VpcPublicGateway has been deprecated in favor of scaleway.network/publicgateway.PublicGateway"
        },
        "scaleway:index/vpcPublicGatewayDhcp:VpcPublicGatewayDhcp": {
            "description": "\u003e **Important:**  The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.network.PublicGatewayDhcp`\" pulumi-lang-dotnet=\"`scaleway.network.PublicGatewayDhcp`\" pulumi-lang-go=\"`network.PublicGatewayDhcp`\" pulumi-lang-python=\"`network.PublicGatewayDhcp`\" pulumi-lang-yaml=\"`scaleway.network.PublicGatewayDhcp`\" pulumi-lang-java=\"`scaleway.network.PublicGatewayDhcp`\"\u003e`scaleway.network.PublicGatewayDhcp`\u003c/span\u003e has been deprecated and will no longer be supported.\nIn 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed.\nFor more information, please refer to the dedicated guide.\n\nCreates and manages Scaleway VPC Public Gateway DHCP configurations.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-c05544).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.PublicGatewayDhcp(\"main\", {subnet: \"192.168.1.0/24\"});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.PublicGatewayDhcp(\"main\", subnet=\"192.168.1.0/24\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.PublicGatewayDhcp(\"main\", new()\n    {\n        Subnet = \"192.168.1.0/24\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewPublicGatewayDhcp(ctx, \"main\", \u0026network.PublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"192.168.1.0/24\"),\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.scaleway.network.PublicGatewayDhcp;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new PublicGatewayDhcp(\"main\", PublicGatewayDhcpArgs.builder()\n            .subnet(\"192.168.1.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:PublicGatewayDhcp\n    properties:\n      subnet: 192.168.1.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway DHCP configuration can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayDhcp:VpcPublicGatewayDhcp main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP address of the DHCP server. This will be the gateway's address in the Private Network.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Public Gateway DHCP configuration.\n"
                },
                "dnsLocalName": {
                    "type": "string",
                    "description": "TLD given to hostnames in the Private Network. Allowed characters are `a-z0-9-.`. Defaults to the slugified Private Network name if created along a GatewayNetwork, or else to \u003cspan pulumi-lang-nodejs=\"`priv`\" pulumi-lang-dotnet=\"`Priv`\" pulumi-lang-go=\"`priv`\" pulumi-lang-python=\"`priv`\" pulumi-lang-yaml=\"`priv`\" pulumi-lang-java=\"`priv`\"\u003e`priv`\u003c/span\u003e.\n"
                },
                "dnsSearches": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Additional DNS search paths\n"
                },
                "dnsServersOverrides": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Override the DNS server list pushed to DHCP clients, instead of the gateway itself.\n"
                },
                "enableDynamic": {
                    "type": "boolean",
                    "description": "Whether to enable dynamic pooling of IPs. By turning the dynamic pool off, only pre-existing DHCP reservations will be handed out. Defaults 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.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the Public Gateway DHCP config is associated with.\n"
                },
                "poolHigh": {
                    "type": "string",
                    "description": "High IP (excluded) of the dynamic address pool. Defaults to the last address of the subnet.\n"
                },
                "poolLow": {
                    "type": "string",
                    "description": "Low IP (included) of the dynamic address pool. Defaults to the second address of the subnet.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway DHCP configuration is associated with.\n"
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Whether the gateway should push a default route to DHCP clients or only hand out IPs. Defaults 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.\n\n\u003e **Warning**: If you need to setup a default route, it's recommended to use the \u003cspan pulumi-lang-nodejs=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-dotnet=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-go=\"`network.GatewayNetwork`\" pulumi-lang-python=\"`network.GatewayNetwork`\" pulumi-lang-yaml=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-java=\"`scaleway.network.GatewayNetwork`\"\u003e`scaleway.network.GatewayNetwork`\u003c/span\u003e resource instead.\n"
                },
                "pushDnsServer": {
                    "type": "boolean",
                    "description": "Whether the gateway should push custom DNS servers to clients. This allows for instance hostname \u003e IP resolution. Defaults 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.\n"
                },
                "rebindTimer": {
                    "type": "integer",
                    "description": "After how long, in seconds, a DHCP client will query for a new lease if previous renews fail. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`validLifetime`\" pulumi-lang-dotnet=\"`ValidLifetime`\" pulumi-lang-go=\"`validLifetime`\" pulumi-lang-python=\"`valid_lifetime`\" pulumi-lang-yaml=\"`validLifetime`\" pulumi-lang-java=\"`validLifetime`\"\u003e`validLifetime`\u003c/span\u003e. Defaults to 51m (3060s).\n"
                },
                "renewTimer": {
                    "type": "integer",
                    "description": "After how long, in seconds, a renewal will be attempted. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`rebindTimer`\" pulumi-lang-dotnet=\"`RebindTimer`\" pulumi-lang-go=\"`rebindTimer`\" pulumi-lang-python=\"`rebind_timer`\" pulumi-lang-yaml=\"`rebindTimer`\" pulumi-lang-java=\"`rebindTimer`\"\u003e`rebindTimer`\u003c/span\u003e. Defaults to 50m (3000s).\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet to associate with the Public Gateway DHCP configuration.\n",
                    "deprecationMessage": "The 'dhcp' resource is deprecated and no longer functional. DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed. Please remove this resource from your configuration. For more information, please refer to the dedicated guide: https://github.com/scaleway/terraform-provider-scaleway/blob/master/docs/guides/migration_guide_vpcgw_v2.md"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Public Gateway DHCP configuration.\n"
                },
                "validLifetime": {
                    "type": "integer",
                    "description": "How long, in seconds, DHCP entries will be valid. Defaults to 1h (3600s).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n"
                }
            },
            "required": [
                "address",
                "createdAt",
                "dnsLocalName",
                "dnsSearches",
                "dnsServersOverrides",
                "enableDynamic",
                "organizationId",
                "poolHigh",
                "poolLow",
                "projectId",
                "pushDefaultRoute",
                "pushDnsServer",
                "rebindTimer",
                "renewTimer",
                "subnet",
                "updatedAt",
                "validLifetime"
            ],
            "inputProperties": {
                "address": {
                    "type": "string",
                    "description": "The IP address of the DHCP server. This will be the gateway's address in the Private Network.\n"
                },
                "dnsLocalName": {
                    "type": "string",
                    "description": "TLD given to hostnames in the Private Network. Allowed characters are `a-z0-9-.`. Defaults to the slugified Private Network name if created along a GatewayNetwork, or else to \u003cspan pulumi-lang-nodejs=\"`priv`\" pulumi-lang-dotnet=\"`Priv`\" pulumi-lang-go=\"`priv`\" pulumi-lang-python=\"`priv`\" pulumi-lang-yaml=\"`priv`\" pulumi-lang-java=\"`priv`\"\u003e`priv`\u003c/span\u003e.\n"
                },
                "dnsSearches": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Additional DNS search paths\n"
                },
                "dnsServersOverrides": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Override the DNS server list pushed to DHCP clients, instead of the gateway itself.\n"
                },
                "enableDynamic": {
                    "type": "boolean",
                    "description": "Whether to enable dynamic pooling of IPs. By turning the dynamic pool off, only pre-existing DHCP reservations will be handed out. Defaults 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.\n"
                },
                "poolHigh": {
                    "type": "string",
                    "description": "High IP (excluded) of the dynamic address pool. Defaults to the last address of the subnet.\n"
                },
                "poolLow": {
                    "type": "string",
                    "description": "Low IP (included) of the dynamic address pool. Defaults to the second address of the subnet.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway DHCP configuration is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "pushDefaultRoute": {
                    "type": "boolean",
                    "description": "Whether the gateway should push a default route to DHCP clients or only hand out IPs. Defaults 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.\n\n\u003e **Warning**: If you need to setup a default route, it's recommended to use the \u003cspan pulumi-lang-nodejs=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-dotnet=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-go=\"`network.GatewayNetwork`\" pulumi-lang-python=\"`network.GatewayNetwork`\" pulumi-lang-yaml=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-java=\"`scaleway.network.GatewayNetwork`\"\u003e`scaleway.network.GatewayNetwork`\u003c/span\u003e resource instead.\n"
                },
                "pushDnsServer": {
                    "type": "boolean",
                    "description": "Whether the gateway should push custom DNS servers to clients. This allows for instance hostname \u003e IP resolution. Defaults 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.\n"
                },
                "rebindTimer": {
                    "type": "integer",
                    "description": "After how long, in seconds, a DHCP client will query for a new lease if previous renews fail. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`validLifetime`\" pulumi-lang-dotnet=\"`ValidLifetime`\" pulumi-lang-go=\"`validLifetime`\" pulumi-lang-python=\"`valid_lifetime`\" pulumi-lang-yaml=\"`validLifetime`\" pulumi-lang-java=\"`validLifetime`\"\u003e`validLifetime`\u003c/span\u003e. Defaults to 51m (3060s).\n"
                },
                "renewTimer": {
                    "type": "integer",
                    "description": "After how long, in seconds, a renewal will be attempted. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`rebindTimer`\" pulumi-lang-dotnet=\"`RebindTimer`\" pulumi-lang-go=\"`rebindTimer`\" pulumi-lang-python=\"`rebind_timer`\" pulumi-lang-yaml=\"`rebindTimer`\" pulumi-lang-java=\"`rebindTimer`\"\u003e`rebindTimer`\u003c/span\u003e. Defaults to 50m (3000s).\n"
                },
                "subnet": {
                    "type": "string",
                    "description": "The subnet to associate with the Public Gateway DHCP configuration.\n",
                    "deprecationMessage": "The 'dhcp' resource is deprecated and no longer functional. DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed. Please remove this resource from your configuration. For more information, please refer to the dedicated guide: https://github.com/scaleway/terraform-provider-scaleway/blob/master/docs/guides/migration_guide_vpcgw_v2.md"
                },
                "validLifetime": {
                    "type": "integer",
                    "description": "How long, in seconds, DHCP entries will be valid. Defaults to 1h (3600s).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "subnet"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGatewayDhcp resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The IP address of the DHCP server. This will be the gateway's address in the Private Network.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Public Gateway DHCP configuration.\n"
                    },
                    "dnsLocalName": {
                        "type": "string",
                        "description": "TLD given to hostnames in the Private Network. Allowed characters are `a-z0-9-.`. Defaults to the slugified Private Network name if created along a GatewayNetwork, or else to \u003cspan pulumi-lang-nodejs=\"`priv`\" pulumi-lang-dotnet=\"`Priv`\" pulumi-lang-go=\"`priv`\" pulumi-lang-python=\"`priv`\" pulumi-lang-yaml=\"`priv`\" pulumi-lang-java=\"`priv`\"\u003e`priv`\u003c/span\u003e.\n"
                    },
                    "dnsSearches": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Additional DNS search paths\n"
                    },
                    "dnsServersOverrides": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Override the DNS server list pushed to DHCP clients, instead of the gateway itself.\n"
                    },
                    "enableDynamic": {
                        "type": "boolean",
                        "description": "Whether to enable dynamic pooling of IPs. By turning the dynamic pool off, only pre-existing DHCP reservations will be handed out. Defaults 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.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the Public Gateway DHCP config is associated with.\n"
                    },
                    "poolHigh": {
                        "type": "string",
                        "description": "High IP (excluded) of the dynamic address pool. Defaults to the last address of the subnet.\n"
                    },
                    "poolLow": {
                        "type": "string",
                        "description": "Low IP (included) of the dynamic address pool. Defaults to the second address of the subnet.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway DHCP configuration is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "pushDefaultRoute": {
                        "type": "boolean",
                        "description": "Whether the gateway should push a default route to DHCP clients or only hand out IPs. Defaults 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.\n\n\u003e **Warning**: If you need to setup a default route, it's recommended to use the \u003cspan pulumi-lang-nodejs=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-dotnet=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-go=\"`network.GatewayNetwork`\" pulumi-lang-python=\"`network.GatewayNetwork`\" pulumi-lang-yaml=\"`scaleway.network.GatewayNetwork`\" pulumi-lang-java=\"`scaleway.network.GatewayNetwork`\"\u003e`scaleway.network.GatewayNetwork`\u003c/span\u003e resource instead.\n"
                    },
                    "pushDnsServer": {
                        "type": "boolean",
                        "description": "Whether the gateway should push custom DNS servers to clients. This allows for instance hostname \u003e IP resolution. Defaults 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.\n"
                    },
                    "rebindTimer": {
                        "type": "integer",
                        "description": "After how long, in seconds, a DHCP client will query for a new lease if previous renews fail. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`validLifetime`\" pulumi-lang-dotnet=\"`ValidLifetime`\" pulumi-lang-go=\"`validLifetime`\" pulumi-lang-python=\"`valid_lifetime`\" pulumi-lang-yaml=\"`validLifetime`\" pulumi-lang-java=\"`validLifetime`\"\u003e`validLifetime`\u003c/span\u003e. Defaults to 51m (3060s).\n"
                    },
                    "renewTimer": {
                        "type": "integer",
                        "description": "After how long, in seconds, a renewal will be attempted. Must be 30s lower than \u003cspan pulumi-lang-nodejs=\"`rebindTimer`\" pulumi-lang-dotnet=\"`RebindTimer`\" pulumi-lang-go=\"`rebindTimer`\" pulumi-lang-python=\"`rebind_timer`\" pulumi-lang-yaml=\"`rebindTimer`\" pulumi-lang-java=\"`rebindTimer`\"\u003e`rebindTimer`\u003c/span\u003e. Defaults to 50m (3000s).\n"
                    },
                    "subnet": {
                        "type": "string",
                        "description": "The subnet to associate with the Public Gateway DHCP configuration.\n",
                        "deprecationMessage": "The 'dhcp' resource is deprecated and no longer functional. DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed. Please remove this resource from your configuration. For more information, please refer to the dedicated guide: https://github.com/scaleway/terraform-provider-scaleway/blob/master/docs/guides/migration_guide_vpcgw_v2.md"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Public Gateway DHCP configuration.\n"
                    },
                    "validLifetime": {
                        "type": "integer",
                        "description": "How long, in seconds, DHCP entries will be valid. Defaults to 1h (3600s).\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgatewaydhcp.VpcPublicGatewayDhcp has been deprecated in favor of scaleway.network/publicgatewaydhcp.PublicGatewayDhcp"
        },
        "scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation": {
            "description": "\u003e **Important:**  The resource \u003cspan pulumi-lang-nodejs=\"`scaleway.network.PublicGatewayDhcpReservation`\" pulumi-lang-dotnet=\"`scaleway.network.PublicGatewayDhcpReservation`\" pulumi-lang-go=\"`network.PublicGatewayDhcpReservation`\" pulumi-lang-python=\"`network.PublicGatewayDhcpReservation`\" pulumi-lang-yaml=\"`scaleway.network.PublicGatewayDhcpReservation`\" pulumi-lang-java=\"`scaleway.network.PublicGatewayDhcpReservation`\"\u003e`scaleway.network.PublicGatewayDhcpReservation`\u003c/span\u003e has been deprecated and will no longer be supported.\nIn 2023, DHCP functionality was moved from Public Gateways to Private Networks, DHCP resources are now no longer needed.\nYou can use IPAM to manage your IPs. For more information, please refer to the dedicated guide.\n\nCreates and manages [Scaleway DHCP Reservations](https://www.scaleway.com/en/docs/vpc/concepts/#dhcp).\n\nThese static associations are used to assign IP addresses based on the MAC addresses of the resource.\n\nStatically assigned IP addresses should fall within the configured subnet, but be outside of the dynamic range.\n\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-c05544).\n\n[DHCP reservations](https://www.scaleway.com/en/developers/api/public-gateway/#dhcp-entries-e40fb6) hold both dynamic DHCP leases (IP addresses dynamically assigned by the gateway to resources) and static user-created DHCP reservations.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.PrivateNetwork(\"main\", {name: \"your_private_network\"});\nconst mainServer = new scaleway.instance.Server(\"main\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    zone: \"fr-par-1\",\n    privateNetworks: [{\n        pnId: main.id,\n    }],\n});\nconst mainPublicGatewayIp = new scaleway.network.PublicGatewayIp(\"main\", {});\nconst mainPublicGatewayDhcp = new scaleway.network.PublicGatewayDhcp(\"main\", {subnet: \"192.168.1.0/24\"});\nconst mainPublicGateway = new scaleway.network.PublicGateway(\"main\", {\n    name: \"foobar\",\n    type: \"VPC-GW-S\",\n    ipId: mainPublicGatewayIp.id,\n});\nconst mainGatewayNetwork = new scaleway.network.GatewayNetwork(\"main\", {\n    gatewayId: mainPublicGateway.id,\n    privateNetworkId: main.id,\n    dhcpId: mainPublicGatewayDhcp.id,\n    cleanupDhcp: true,\n    enableMasquerade: true,\n}, {\n    dependsOn: [\n        mainPublicGatewayIp,\n        main,\n    ],\n});\nconst mainPublicGatewayDhcpReservation = new scaleway.network.PublicGatewayDhcpReservation(\"main\", {\n    gatewayNetworkId: mainGatewayNetwork.id,\n    macAddress: mainServer.privateNetworks.apply(privateNetworks =\u003e privateNetworks?.[0]?.macAddress),\n    ipAddress: \"192.168.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.PrivateNetwork(\"main\", name=\"your_private_network\")\nmain_server = scaleway.instance.Server(\"main\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    zone=\"fr-par-1\",\n    private_networks=[{\n        \"pn_id\": main.id,\n    }])\nmain_public_gateway_ip = scaleway.network.PublicGatewayIp(\"main\")\nmain_public_gateway_dhcp = scaleway.network.PublicGatewayDhcp(\"main\", subnet=\"192.168.1.0/24\")\nmain_public_gateway = scaleway.network.PublicGateway(\"main\",\n    name=\"foobar\",\n    type=\"VPC-GW-S\",\n    ip_id=main_public_gateway_ip.id)\nmain_gateway_network = scaleway.network.GatewayNetwork(\"main\",\n    gateway_id=main_public_gateway.id,\n    private_network_id=main.id,\n    dhcp_id=main_public_gateway_dhcp.id,\n    cleanup_dhcp=True,\n    enable_masquerade=True,\n    opts = pulumi.ResourceOptions(depends_on=[\n            main_public_gateway_ip,\n            main,\n        ]))\nmain_public_gateway_dhcp_reservation = scaleway.network.PublicGatewayDhcpReservation(\"main\",\n    gateway_network_id=main_gateway_network.id,\n    mac_address=main_server.private_networks[0].mac_address,\n    ip_address=\"192.168.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.PrivateNetwork(\"main\", new()\n    {\n        Name = \"your_private_network\",\n    });\n\n    var mainServer = new Scaleway.Instance.Server(\"main\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        Zone = \"fr-par-1\",\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Instance.Inputs.ServerPrivateNetworkArgs\n            {\n                PnId = main.Id,\n            },\n        },\n    });\n\n    var mainPublicGatewayIp = new Scaleway.Network.PublicGatewayIp(\"main\");\n\n    var mainPublicGatewayDhcp = new Scaleway.Network.PublicGatewayDhcp(\"main\", new()\n    {\n        Subnet = \"192.168.1.0/24\",\n    });\n\n    var mainPublicGateway = new Scaleway.Network.PublicGateway(\"main\", new()\n    {\n        Name = \"foobar\",\n        Type = \"VPC-GW-S\",\n        IpId = mainPublicGatewayIp.Id,\n    });\n\n    var mainGatewayNetwork = new Scaleway.Network.GatewayNetwork(\"main\", new()\n    {\n        GatewayId = mainPublicGateway.Id,\n        PrivateNetworkId = main.Id,\n        DhcpId = mainPublicGatewayDhcp.Id,\n        CleanupDhcp = true,\n        EnableMasquerade = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainPublicGatewayIp,\n            main,\n        },\n    });\n\n    var mainPublicGatewayDhcpReservation = new Scaleway.Network.PublicGatewayDhcpReservation(\"main\", new()\n    {\n        GatewayNetworkId = mainGatewayNetwork.Id,\n        MacAddress = mainServer.PrivateNetworks.Apply(privateNetworks =\u003e privateNetworks[0]?.MacAddress),\n        IpAddress = \"192.168.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := network.NewPrivateNetwork(ctx, \"main\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"your_private_network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainServer, err := instance.NewServer(ctx, \"main\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tZone:  pulumi.String(\"fr-par-1\"),\n\t\t\tPrivateNetworks: instance.ServerPrivateNetworkArray{\n\t\t\t\t\u0026instance.ServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: main.ID(),\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\tmainPublicGatewayIp, err := network.NewPublicGatewayIp(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPublicGatewayDhcp, err := network.NewPublicGatewayDhcp(ctx, \"main\", \u0026network.PublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"192.168.1.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainPublicGateway, err := network.NewPublicGateway(ctx, \"main\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: mainPublicGatewayIp.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainGatewayNetwork, err := network.NewGatewayNetwork(ctx, \"main\", \u0026network.GatewayNetworkArgs{\n\t\t\tGatewayId:        mainPublicGateway.ID(),\n\t\t\tPrivateNetworkId: main.ID(),\n\t\t\tDhcpId:           mainPublicGatewayDhcp.ID(),\n\t\t\tCleanupDhcp:      pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainPublicGatewayIp,\n\t\t\tmain,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewPublicGatewayDhcpReservation(ctx, \"main\", \u0026network.PublicGatewayDhcpReservationArgs{\n\t\t\tGatewayNetworkId: mainGatewayNetwork.ID(),\n\t\t\tMacAddress: pulumi.String(mainServer.PrivateNetworks.ApplyT(func(privateNetworks []instance.ServerPrivateNetwork) (*string, error) {\n\t\t\t\treturn \u0026privateNetworks[0].MacAddress, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tIpAddress: pulumi.String(\"192.168.1.1\"),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.network.PublicGatewayIp;\nimport com.pulumi.scaleway.network.PublicGatewayDhcp;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport com.pulumi.scaleway.network.GatewayNetwork;\nimport com.pulumi.scaleway.network.GatewayNetworkArgs;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpReservation;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpReservationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new PrivateNetwork(\"main\", PrivateNetworkArgs.builder()\n            .name(\"your_private_network\")\n            .build());\n\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .zone(\"fr-par-1\")\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .pnId(main.id())\n                .build())\n            .build());\n\n        var mainPublicGatewayIp = new PublicGatewayIp(\"mainPublicGatewayIp\");\n\n        var mainPublicGatewayDhcp = new PublicGatewayDhcp(\"mainPublicGatewayDhcp\", PublicGatewayDhcpArgs.builder()\n            .subnet(\"192.168.1.0/24\")\n            .build());\n\n        var mainPublicGateway = new PublicGateway(\"mainPublicGateway\", PublicGatewayArgs.builder()\n            .name(\"foobar\")\n            .type(\"VPC-GW-S\")\n            .ipId(mainPublicGatewayIp.id())\n            .build());\n\n        var mainGatewayNetwork = new GatewayNetwork(\"mainGatewayNetwork\", GatewayNetworkArgs.builder()\n            .gatewayId(mainPublicGateway.id())\n            .privateNetworkId(main.id())\n            .dhcpId(mainPublicGatewayDhcp.id())\n            .cleanupDhcp(true)\n            .enableMasquerade(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    mainPublicGatewayIp,\n                    main)\n                .build());\n\n        var mainPublicGatewayDhcpReservation = new PublicGatewayDhcpReservation(\"mainPublicGatewayDhcpReservation\", PublicGatewayDhcpReservationArgs.builder()\n            .gatewayNetworkId(mainGatewayNetwork.id())\n            .macAddress(mainServer.privateNetworks().applyValue(_privateNetworks -\u003e _privateNetworks[0].macAddress()))\n            .ipAddress(\"192.168.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: your_private_network\n  mainServer:\n    type: scaleway:instance:Server\n    name: main\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      zone: fr-par-1\n      privateNetworks:\n        - pnId: ${main.id}\n  mainPublicGatewayIp:\n    type: scaleway:network:PublicGatewayIp\n    name: main\n  mainPublicGatewayDhcp:\n    type: scaleway:network:PublicGatewayDhcp\n    name: main\n    properties:\n      subnet: 192.168.1.0/24\n  mainPublicGateway:\n    type: scaleway:network:PublicGateway\n    name: main\n    properties:\n      name: foobar\n      type: VPC-GW-S\n      ipId: ${mainPublicGatewayIp.id}\n  mainGatewayNetwork:\n    type: scaleway:network:GatewayNetwork\n    name: main\n    properties:\n      gatewayId: ${mainPublicGateway.id}\n      privateNetworkId: ${main.id}\n      dhcpId: ${mainPublicGatewayDhcp.id}\n      cleanupDhcp: true\n      enableMasquerade: true\n    options:\n      dependsOn:\n        - ${mainPublicGatewayIp}\n        - ${main}\n  mainPublicGatewayDhcpReservation:\n    type: scaleway:network:PublicGatewayDhcpReservation\n    name: main\n    properties:\n      gatewayNetworkId: ${mainGatewayNetwork.id}\n      macAddress: ${mainServer.privateNetworks[0].macAddress}\n      ipAddress: 192.168.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway DHCP reservation configurations can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayDhcpReservation:VpcPublicGatewayDhcpReservation main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Public Gateway DHCP configuration.\n"
                },
                "gatewayNetworkId": {
                    "type": "string",
                    "description": "The ID of the owning GatewayNetwork.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname of the client machine.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address to give to the machine.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address for the static entry.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The reservation type, either static (DHCP reservation) or dynamic (DHCP lease). Possible values are \u003cspan pulumi-lang-nodejs=\"`reservation`\" pulumi-lang-dotnet=\"`Reservation`\" pulumi-lang-go=\"`reservation`\" pulumi-lang-python=\"`reservation`\" pulumi-lang-yaml=\"`reservation`\" pulumi-lang-java=\"`reservation`\"\u003e`reservation`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`lease`\" pulumi-lang-dotnet=\"`Lease`\" pulumi-lang-go=\"`lease`\" pulumi-lang-python=\"`lease`\" pulumi-lang-yaml=\"`lease`\" pulumi-lang-java=\"`lease`\"\u003e`lease`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Public Gateway DHCP configuration.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the public gateway DHCP config should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "gatewayNetworkId",
                "hostname",
                "ipAddress",
                "macAddress",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "gatewayNetworkId": {
                    "type": "string",
                    "description": "The ID of the owning GatewayNetwork.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address to give to the machine.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address for the static entry.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the public gateway DHCP config should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "gatewayNetworkId",
                "ipAddress",
                "macAddress"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGatewayDhcpReservation resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Public Gateway DHCP configuration.\n"
                    },
                    "gatewayNetworkId": {
                        "type": "string",
                        "description": "The ID of the owning GatewayNetwork.\n"
                    },
                    "hostname": {
                        "type": "string",
                        "description": "The hostname of the client machine.\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP address to give to the machine.\n"
                    },
                    "macAddress": {
                        "type": "string",
                        "description": "The MAC address for the static entry.\n",
                        "willReplaceOnChanges": true
                    },
                    "type": {
                        "type": "string",
                        "description": "The reservation type, either static (DHCP reservation) or dynamic (DHCP lease). Possible values are \u003cspan pulumi-lang-nodejs=\"`reservation`\" pulumi-lang-dotnet=\"`Reservation`\" pulumi-lang-go=\"`reservation`\" pulumi-lang-python=\"`reservation`\" pulumi-lang-yaml=\"`reservation`\" pulumi-lang-java=\"`reservation`\"\u003e`reservation`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`lease`\" pulumi-lang-dotnet=\"`Lease`\" pulumi-lang-go=\"`lease`\" pulumi-lang-python=\"`lease`\" pulumi-lang-yaml=\"`lease`\" pulumi-lang-java=\"`lease`\"\u003e`lease`\u003c/span\u003e.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Public Gateway DHCP configuration.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the public gateway DHCP config should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgatewaydhcpreservation.VpcPublicGatewayDhcpReservation has been deprecated in favor of scaleway.network/publicgatewaydhcpreservation.PublicGatewayDhcpReservation"
        },
        "scaleway:index/vpcPublicGatewayIp:VpcPublicGatewayIp": {
            "description": "Creates and manages Scaleway VPC Public Gateway public (flexible) IP addresses.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#path-ips-list-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.PublicGatewayIp(\"main\", {reverse: \"tf.example.com\"});\nconst tfA = new scaleway.domain.Record(\"tf_A\", {\n    dnsZone: \"example.com\",\n    name: \"tf\",\n    type: \"A\",\n    data: main.address,\n    ttl: 3600,\n    priority: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.PublicGatewayIp(\"main\", reverse=\"tf.example.com\")\ntf_a = scaleway.domain.Record(\"tf_A\",\n    dns_zone=\"example.com\",\n    name=\"tf\",\n    type=\"A\",\n    data=main.address,\n    ttl=3600,\n    priority=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.PublicGatewayIp(\"main\", new()\n    {\n        Reverse = \"tf.example.com\",\n    });\n\n    var tfA = new Scaleway.Domain.Record(\"tf_A\", new()\n    {\n        DnsZone = \"example.com\",\n        Name = \"tf\",\n        Type = \"A\",\n        Data = main.Address,\n        Ttl = 3600,\n        Priority = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := network.NewPublicGatewayIp(ctx, \"main\", \u0026network.PublicGatewayIpArgs{\n\t\t\tReverse: pulumi.String(\"tf.example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"tf_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"example.com\"),\n\t\t\tName:     pulumi.String(\"tf\"),\n\t\t\tType:     pulumi.String(\"A\"),\n\t\t\tData:     main.Address,\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(1),\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.scaleway.network.PublicGatewayIp;\nimport com.pulumi.scaleway.network.PublicGatewayIpArgs;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new PublicGatewayIp(\"main\", PublicGatewayIpArgs.builder()\n            .reverse(\"tf.example.com\")\n            .build());\n\n        var tfA = new Record(\"tfA\", RecordArgs.builder()\n            .dnsZone(\"example.com\")\n            .name(\"tf\")\n            .type(\"A\")\n            .data(main.address())\n            .ttl(3600)\n            .priority(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tfA:\n    type: scaleway:domain:Record\n    name: tf_A\n    properties:\n      dnsZone: example.com\n      name: tf\n      type: A\n      data: ${main.address}\n      ttl: 3600\n      priority: 1\n  main:\n    type: scaleway:network:PublicGatewayIp\n    properties:\n      reverse: tf.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway IPs can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayIp:VpcPublicGatewayIp main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP address itself.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the Public Gateway IP.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the Public Gateway IP is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway IP is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain name for the IP address\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Public Gateway IP.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the Public Gateway IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway IP should be created.\n"
                }
            },
            "required": [
                "address",
                "createdAt",
                "organizationId",
                "projectId",
                "reverse",
                "updatedAt"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain name for the IP address\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Public Gateway IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway IP should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGatewayIp resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The IP address itself.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the Public Gateway IP.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the Public Gateway IP is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the Project the Public Gateway IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse domain name for the IP address\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the Public Gateway IP.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the Public Gateway IP.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway IP should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgatewayip.VpcPublicGatewayIp has been deprecated in favor of scaleway.network/publicgatewayip.PublicGatewayIp"
        },
        "scaleway:index/vpcPublicGatewayIpReverseDns:VpcPublicGatewayIpReverseDns": {
            "description": "Manages Scaleway Public Gateway public (flexible) IPs' reverse DNS.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#path-ips-list-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.network.PublicGatewayIp(\"main\", {});\nconst tfA = new scaleway.domain.Record(\"tf_A\", {\n    dnsZone: \"example.com\",\n    name: \"tf\",\n    type: \"A\",\n    data: main.address,\n    ttl: 3600,\n    priority: 1,\n});\nconst mainPublicGatewayIpReverseDns = new scaleway.network.PublicGatewayIpReverseDns(\"main\", {\n    gatewayIpId: main.id,\n    reverse: \"tf.example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.network.PublicGatewayIp(\"main\")\ntf_a = scaleway.domain.Record(\"tf_A\",\n    dns_zone=\"example.com\",\n    name=\"tf\",\n    type=\"A\",\n    data=main.address,\n    ttl=3600,\n    priority=1)\nmain_public_gateway_ip_reverse_dns = scaleway.network.PublicGatewayIpReverseDns(\"main\",\n    gateway_ip_id=main.id,\n    reverse=\"tf.example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Network.PublicGatewayIp(\"main\");\n\n    var tfA = new Scaleway.Domain.Record(\"tf_A\", new()\n    {\n        DnsZone = \"example.com\",\n        Name = \"tf\",\n        Type = \"A\",\n        Data = main.Address,\n        Ttl = 3600,\n        Priority = 1,\n    });\n\n    var mainPublicGatewayIpReverseDns = new Scaleway.Network.PublicGatewayIpReverseDns(\"main\", new()\n    {\n        GatewayIpId = main.Id,\n        Reverse = \"tf.example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := network.NewPublicGatewayIp(ctx, \"main\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"tf_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"example.com\"),\n\t\t\tName:     pulumi.String(\"tf\"),\n\t\t\tType:     pulumi.String(\"A\"),\n\t\t\tData:     main.Address,\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewPublicGatewayIpReverseDns(ctx, \"main\", \u0026network.PublicGatewayIpReverseDnsArgs{\n\t\t\tGatewayIpId: main.ID(),\n\t\t\tReverse:     pulumi.String(\"tf.example.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.scaleway.network.PublicGatewayIp;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.network.PublicGatewayIpReverseDns;\nimport com.pulumi.scaleway.network.PublicGatewayIpReverseDnsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new PublicGatewayIp(\"main\");\n\n        var tfA = new Record(\"tfA\", RecordArgs.builder()\n            .dnsZone(\"example.com\")\n            .name(\"tf\")\n            .type(\"A\")\n            .data(main.address())\n            .ttl(3600)\n            .priority(1)\n            .build());\n\n        var mainPublicGatewayIpReverseDns = new PublicGatewayIpReverseDns(\"mainPublicGatewayIpReverseDns\", PublicGatewayIpReverseDnsArgs.builder()\n            .gatewayIpId(main.id())\n            .reverse(\"tf.example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:network:PublicGatewayIp\n  tfA:\n    type: scaleway:domain:Record\n    name: tf_A\n    properties:\n      dnsZone: example.com\n      name: tf\n      type: A\n      data: ${main.address}\n      ttl: 3600\n      priority: 1\n  mainPublicGatewayIpReverseDns:\n    type: scaleway:network:PublicGatewayIpReverseDns\n    name: main\n    properties:\n      gatewayIpId: ${main.id}\n      reverse: tf.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway IP reverse DNS can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayIpReverseDns:VpcPublicGatewayIpReverseDns reverse fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "gatewayIpId": {
                    "type": "string",
                    "description": "The Public Gateway IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain name for this IP address\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "gatewayIpId",
                "reverse"
            ],
            "inputProperties": {
                "gatewayIpId": {
                    "type": "string",
                    "description": "The Public Gateway IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse domain name for this IP address\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "gatewayIpId",
                "reverse"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGatewayIpReverseDns resources.\n",
                "properties": {
                    "gatewayIpId": {
                        "type": "string",
                        "description": "The Public Gateway IP ID\n"
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse domain name for this IP address\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgatewayipreversedns.VpcPublicGatewayIpReverseDns has been deprecated in favor of scaleway.network/publicgatewayipreversedns.PublicGatewayIpReverseDns"
        },
        "scaleway:index/vpcPublicGatewayPatRule:VpcPublicGatewayPatRule": {
            "description": "Creates and manages Scaleway Public Gateway PAT (Port Address Translation).\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/public-gateway/#pat-rules-e75d10).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst sg01 = new scaleway.instance.SecurityGroup(\"sg01\", {\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n    inboundRules: [{\n        action: \"accept\",\n        port: 22,\n        protocol: \"TCP\",\n    }],\n});\nconst srv01 = new scaleway.instance.Server(\"srv01\", {\n    name: \"my-server\",\n    type: \"PLAY2-NANO\",\n    image: \"ubuntu_jammy\",\n    securityGroupId: sg01.id,\n});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {name: \"my-pn\"});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    serverId: srv01.id,\n    privateNetworkId: pn01.id,\n});\nconst dhcp01 = new scaleway.network.PublicGatewayDhcp(\"dhcp01\", {subnet: \"192.168.0.0/24\"});\nconst ip01 = new scaleway.network.PublicGatewayIp(\"ip01\", {});\nconst pg01 = new scaleway.network.PublicGateway(\"pg01\", {\n    name: \"my-pg\",\n    type: \"VPC-GW-S\",\n    ipId: ip01.id,\n});\nconst gn01 = new scaleway.network.GatewayNetwork(\"gn01\", {\n    gatewayId: pg01.id,\n    privateNetworkId: pn01.id,\n    dhcpId: dhcp01.id,\n    cleanupDhcp: true,\n    enableMasquerade: true,\n});\nconst rsv01 = new scaleway.network.PublicGatewayDhcpReservation(\"rsv01\", {\n    gatewayNetworkId: gn01.id,\n    macAddress: pnic01.macAddress,\n    ipAddress: \"192.168.0.7\",\n});\n// PAT rule for SSH traffic\nconst pat01 = new scaleway.network.PublicGatewayPatRule(\"pat01\", {\n    gatewayId: pg01.id,\n    privateIp: rsv01.ipAddress,\n    privatePort: 22,\n    publicPort: 2202,\n    protocol: \"tcp\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsg01 = scaleway.instance.SecurityGroup(\"sg01\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"port\": 22,\n        \"protocol\": \"TCP\",\n    }])\nsrv01 = scaleway.instance.Server(\"srv01\",\n    name=\"my-server\",\n    type=\"PLAY2-NANO\",\n    image=\"ubuntu_jammy\",\n    security_group_id=sg01.id)\npn01 = scaleway.network.PrivateNetwork(\"pn01\", name=\"my-pn\")\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    server_id=srv01.id,\n    private_network_id=pn01.id)\ndhcp01 = scaleway.network.PublicGatewayDhcp(\"dhcp01\", subnet=\"192.168.0.0/24\")\nip01 = scaleway.network.PublicGatewayIp(\"ip01\")\npg01 = scaleway.network.PublicGateway(\"pg01\",\n    name=\"my-pg\",\n    type=\"VPC-GW-S\",\n    ip_id=ip01.id)\ngn01 = scaleway.network.GatewayNetwork(\"gn01\",\n    gateway_id=pg01.id,\n    private_network_id=pn01.id,\n    dhcp_id=dhcp01.id,\n    cleanup_dhcp=True,\n    enable_masquerade=True)\nrsv01 = scaleway.network.PublicGatewayDhcpReservation(\"rsv01\",\n    gateway_network_id=gn01.id,\n    mac_address=pnic01.mac_address,\n    ip_address=\"192.168.0.7\")\n# PAT rule for SSH traffic\npat01 = scaleway.network.PublicGatewayPatRule(\"pat01\",\n    gateway_id=pg01.id,\n    private_ip=rsv01.ip_address,\n    private_port=22,\n    public_port=2202,\n    protocol=\"tcp\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sg01 = new Scaleway.Instance.SecurityGroup(\"sg01\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                Protocol = \"TCP\",\n            },\n        },\n    });\n\n    var srv01 = new Scaleway.Instance.Server(\"srv01\", new()\n    {\n        Name = \"my-server\",\n        Type = \"PLAY2-NANO\",\n        Image = \"ubuntu_jammy\",\n        SecurityGroupId = sg01.Id,\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"my-pn\",\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        ServerId = srv01.Id,\n        PrivateNetworkId = pn01.Id,\n    });\n\n    var dhcp01 = new Scaleway.Network.PublicGatewayDhcp(\"dhcp01\", new()\n    {\n        Subnet = \"192.168.0.0/24\",\n    });\n\n    var ip01 = new Scaleway.Network.PublicGatewayIp(\"ip01\");\n\n    var pg01 = new Scaleway.Network.PublicGateway(\"pg01\", new()\n    {\n        Name = \"my-pg\",\n        Type = \"VPC-GW-S\",\n        IpId = ip01.Id,\n    });\n\n    var gn01 = new Scaleway.Network.GatewayNetwork(\"gn01\", new()\n    {\n        GatewayId = pg01.Id,\n        PrivateNetworkId = pn01.Id,\n        DhcpId = dhcp01.Id,\n        CleanupDhcp = true,\n        EnableMasquerade = true,\n    });\n\n    var rsv01 = new Scaleway.Network.PublicGatewayDhcpReservation(\"rsv01\", new()\n    {\n        GatewayNetworkId = gn01.Id,\n        MacAddress = pnic01.MacAddress,\n        IpAddress = \"192.168.0.7\",\n    });\n\n    // PAT rule for SSH traffic\n    var pat01 = new Scaleway.Network.PublicGatewayPatRule(\"pat01\", new()\n    {\n        GatewayId = pg01.Id,\n        PrivateIp = rsv01.IpAddress,\n        PrivatePort = 22,\n        PublicPort = 2202,\n        Protocol = \"tcp\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsg01, err := instance.NewSecurityGroup(ctx, \"sg01\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy:  pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"accept\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:   pulumi.String(\"accept\"),\n\t\t\t\t\tPort:     pulumi.Int(22),\n\t\t\t\t\tProtocol: pulumi.String(\"TCP\"),\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\tsrv01, err := instance.NewServer(ctx, \"srv01\", \u0026instance.ServerArgs{\n\t\t\tName:            pulumi.String(\"my-server\"),\n\t\t\tType:            pulumi.String(\"PLAY2-NANO\"),\n\t\t\tImage:           pulumi.String(\"ubuntu_jammy\"),\n\t\t\tSecurityGroupId: sg01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"my-pn\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpnic01, err := instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tServerId:         srv01.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdhcp01, err := network.NewPublicGatewayDhcp(ctx, \"dhcp01\", \u0026network.PublicGatewayDhcpArgs{\n\t\t\tSubnet: pulumi.String(\"192.168.0.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := network.NewPublicGatewayIp(ctx, \"ip01\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpg01, err := network.NewPublicGateway(ctx, \"pg01\", \u0026network.PublicGatewayArgs{\n\t\t\tName: pulumi.String(\"my-pg\"),\n\t\t\tType: pulumi.String(\"VPC-GW-S\"),\n\t\t\tIpId: ip01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgn01, err := network.NewGatewayNetwork(ctx, \"gn01\", \u0026network.GatewayNetworkArgs{\n\t\t\tGatewayId:        pg01.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tDhcpId:           dhcp01.ID(),\n\t\t\tCleanupDhcp:      pulumi.Bool(true),\n\t\t\tEnableMasquerade: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trsv01, err := network.NewPublicGatewayDhcpReservation(ctx, \"rsv01\", \u0026network.PublicGatewayDhcpReservationArgs{\n\t\t\tGatewayNetworkId: gn01.ID(),\n\t\t\tMacAddress:       pnic01.MacAddress,\n\t\t\tIpAddress:        pulumi.String(\"192.168.0.7\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// PAT rule for SSH traffic\n\t\t_, err = network.NewPublicGatewayPatRule(ctx, \"pat01\", \u0026network.PublicGatewayPatRuleArgs{\n\t\t\tGatewayId:   pg01.ID(),\n\t\t\tPrivateIp:   rsv01.IpAddress,\n\t\t\tPrivatePort: pulumi.Int(22),\n\t\t\tPublicPort:  pulumi.Int(2202),\n\t\t\tProtocol:    pulumi.String(\"tcp\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport com.pulumi.scaleway.network.PublicGatewayDhcp;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpArgs;\nimport com.pulumi.scaleway.network.PublicGatewayIp;\nimport com.pulumi.scaleway.network.PublicGateway;\nimport com.pulumi.scaleway.network.PublicGatewayArgs;\nimport com.pulumi.scaleway.network.GatewayNetwork;\nimport com.pulumi.scaleway.network.GatewayNetworkArgs;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpReservation;\nimport com.pulumi.scaleway.network.PublicGatewayDhcpReservationArgs;\nimport com.pulumi.scaleway.network.PublicGatewayPatRule;\nimport com.pulumi.scaleway.network.PublicGatewayPatRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 sg01 = new SecurityGroup(\"sg01\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .outboundDefaultPolicy(\"accept\")\n            .inboundRules(SecurityGroupInboundRuleArgs.builder()\n                .action(\"accept\")\n                .port(22)\n                .protocol(\"TCP\")\n                .build())\n            .build());\n\n        var srv01 = new Server(\"srv01\", ServerArgs.builder()\n            .name(\"my-server\")\n            .type(\"PLAY2-NANO\")\n            .image(\"ubuntu_jammy\")\n            .securityGroupId(sg01.id())\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"my-pn\")\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .serverId(srv01.id())\n            .privateNetworkId(pn01.id())\n            .build());\n\n        var dhcp01 = new PublicGatewayDhcp(\"dhcp01\", PublicGatewayDhcpArgs.builder()\n            .subnet(\"192.168.0.0/24\")\n            .build());\n\n        var ip01 = new PublicGatewayIp(\"ip01\");\n\n        var pg01 = new PublicGateway(\"pg01\", PublicGatewayArgs.builder()\n            .name(\"my-pg\")\n            .type(\"VPC-GW-S\")\n            .ipId(ip01.id())\n            .build());\n\n        var gn01 = new GatewayNetwork(\"gn01\", GatewayNetworkArgs.builder()\n            .gatewayId(pg01.id())\n            .privateNetworkId(pn01.id())\n            .dhcpId(dhcp01.id())\n            .cleanupDhcp(true)\n            .enableMasquerade(true)\n            .build());\n\n        var rsv01 = new PublicGatewayDhcpReservation(\"rsv01\", PublicGatewayDhcpReservationArgs.builder()\n            .gatewayNetworkId(gn01.id())\n            .macAddress(pnic01.macAddress())\n            .ipAddress(\"192.168.0.7\")\n            .build());\n\n        // PAT rule for SSH traffic\n        var pat01 = new PublicGatewayPatRule(\"pat01\", PublicGatewayPatRuleArgs.builder()\n            .gatewayId(pg01.id())\n            .privateIp(rsv01.ipAddress())\n            .privatePort(22)\n            .publicPort(2202)\n            .protocol(\"tcp\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sg01:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      outboundDefaultPolicy: accept\n      inboundRules:\n        - action: accept\n          port: 22\n          protocol: TCP\n  srv01:\n    type: scaleway:instance:Server\n    properties:\n      name: my-server\n      type: PLAY2-NANO\n      image: ubuntu_jammy\n      securityGroupId: ${sg01.id}\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      serverId: ${srv01.id}\n      privateNetworkId: ${pn01.id}\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: my-pn\n  dhcp01:\n    type: scaleway:network:PublicGatewayDhcp\n    properties:\n      subnet: 192.168.0.0/24\n  ip01:\n    type: scaleway:network:PublicGatewayIp\n  pg01:\n    type: scaleway:network:PublicGateway\n    properties:\n      name: my-pg\n      type: VPC-GW-S\n      ipId: ${ip01.id}\n  gn01:\n    type: scaleway:network:GatewayNetwork\n    properties:\n      gatewayId: ${pg01.id}\n      privateNetworkId: ${pn01.id}\n      dhcpId: ${dhcp01.id}\n      cleanupDhcp: true\n      enableMasquerade: true\n  rsv01:\n    type: scaleway:network:PublicGatewayDhcpReservation\n    properties:\n      gatewayNetworkId: ${gn01.id}\n      macAddress: ${pnic01.macAddress}\n      ipAddress: 192.168.0.7\n  # PAT rule for SSH traffic\n  pat01:\n    type: scaleway:network:PublicGatewayPatRule\n    properties:\n      gatewayId: ${pg01.id}\n      privateIp: ${rsv01.ipAddress}\n      privatePort: 22\n      publicPort: 2202\n      protocol: tcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPublic Gateway PAT rule configurations can be imported using `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcPublicGatewayPatRule:VpcPublicGatewayPatRule main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the PAT rule configuration.\n"
                },
                "gatewayId": {
                    "type": "string",
                    "description": "The ID of the Public Gateway.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the PAT rule configuration is associated with.\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The private IP address to forward data to.\n"
                },
                "privatePort": {
                    "type": "integer",
                    "description": "The private port to translate to.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol the rule should apply to. Possible values are \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "publicPort": {
                    "type": "integer",
                    "description": "The public port to listen on.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the PAT rule configuration.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "gatewayId",
                "organizationId",
                "privateIp",
                "privatePort",
                "publicPort",
                "updatedAt"
            ],
            "inputProperties": {
                "gatewayId": {
                    "type": "string",
                    "description": "The ID of the Public Gateway.\n"
                },
                "privateIp": {
                    "type": "string",
                    "description": "The private IP address to forward data to.\n"
                },
                "privatePort": {
                    "type": "integer",
                    "description": "The private port to translate to.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol the rule should apply to. Possible values are \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "publicPort": {
                    "type": "integer",
                    "description": "The public port to listen on.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "gatewayId",
                "privateIp",
                "privatePort",
                "publicPort"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPublicGatewayPatRule resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the PAT rule configuration.\n"
                    },
                    "gatewayId": {
                        "type": "string",
                        "description": "The ID of the Public Gateway.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the PAT rule configuration is associated with.\n"
                    },
                    "privateIp": {
                        "type": "string",
                        "description": "The private IP address to forward data to.\n"
                    },
                    "privatePort": {
                        "type": "integer",
                        "description": "The private port to translate to.\n"
                    },
                    "protocol": {
                        "type": "string",
                        "description": "The protocol the rule should apply to. Possible values are \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                    },
                    "publicPort": {
                        "type": "integer",
                        "description": "The public port to listen on.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the PAT rule configuration.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the Public Gateway DHCP configuration should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcpublicgatewaypatrule.VpcPublicGatewayPatRule has been deprecated in favor of scaleway.network/publicgatewaypatrule.PublicGatewayPatRule"
        },
        "scaleway:index/vpcRoute:VpcRoute": {
            "description": "Creates and manages Scaleway VPC Routes.\nFor more information, see [the main documentation](https://www.scaleway.com/en/docs/vpc/concepts/).\n\n## Example Usage\n\n### With Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"tf-vpc-vpn\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"tf-pn-vpn\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst server01 = new scaleway.instance.Server(\"server01\", {\n    name: \"tf-server-vpn\",\n    type: \"PLAY2-MICRO\",\n    image: \"openvpn\",\n});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    privateNetworkId: pn01.id,\n    serverId: server01.id,\n});\nconst rt01 = new scaleway.network.Route(\"rt01\", {\n    vpcId: vpc01.id,\n    description: \"tf-route-vpn\",\n    tags: [\n        \"tf\",\n        \"route\",\n    ],\n    destination: \"10.0.0.0/24\",\n    nexthopResourceId: pnic01.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"tf-vpc-vpn\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"tf-pn-vpn\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\nserver01 = scaleway.instance.Server(\"server01\",\n    name=\"tf-server-vpn\",\n    type=\"PLAY2-MICRO\",\n    image=\"openvpn\")\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    private_network_id=pn01.id,\n    server_id=server01.id)\nrt01 = scaleway.network.Route(\"rt01\",\n    vpc_id=vpc01.id,\n    description=\"tf-route-vpn\",\n    tags=[\n        \"tf\",\n        \"route\",\n    ],\n    destination=\"10.0.0.0/24\",\n    nexthop_resource_id=pnic01.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"tf-vpc-vpn\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"tf-pn-vpn\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var server01 = new Scaleway.Instance.Server(\"server01\", new()\n    {\n        Name = \"tf-server-vpn\",\n        Type = \"PLAY2-MICRO\",\n        Image = \"openvpn\",\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        PrivateNetworkId = pn01.Id,\n        ServerId = server01.Id,\n    });\n\n    var rt01 = new Scaleway.Network.Route(\"rt01\", new()\n    {\n        VpcId = vpc01.Id,\n        Description = \"tf-route-vpn\",\n        Tags = new[]\n        {\n            \"tf\",\n            \"route\",\n        },\n        Destination = \"10.0.0.0/24\",\n        NexthopResourceId = pnic01.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"tf-vpc-vpn\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"tf-pn-vpn\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserver01, err := instance.NewServer(ctx, \"server01\", \u0026instance.ServerArgs{\n\t\t\tName:  pulumi.String(\"tf-server-vpn\"),\n\t\t\tType:  pulumi.String(\"PLAY2-MICRO\"),\n\t\t\tImage: pulumi.String(\"openvpn\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpnic01, err := instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tServerId:         server01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewRoute(ctx, \"rt01\", \u0026network.RouteArgs{\n\t\t\tVpcId:       vpc01.ID(),\n\t\t\tDescription: pulumi.String(\"tf-route-vpn\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tf\"),\n\t\t\t\tpulumi.String(\"route\"),\n\t\t\t},\n\t\t\tDestination:       pulumi.String(\"10.0.0.0/24\"),\n\t\t\tNexthopResourceId: pnic01.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.pulumi.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport com.pulumi.scaleway.network.Route;\nimport com.pulumi.scaleway.network.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"tf-vpc-vpn\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"tf-pn-vpn\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        var server01 = new Server(\"server01\", ServerArgs.builder()\n            .name(\"tf-server-vpn\")\n            .type(\"PLAY2-MICRO\")\n            .image(\"openvpn\")\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .privateNetworkId(pn01.id())\n            .serverId(server01.id())\n            .build());\n\n        var rt01 = new Route(\"rt01\", RouteArgs.builder()\n            .vpcId(vpc01.id())\n            .description(\"tf-route-vpn\")\n            .tags(            \n                \"tf\",\n                \"route\")\n            .destination(\"10.0.0.0/24\")\n            .nexthopResourceId(pnic01.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: tf-vpc-vpn\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: tf-pn-vpn\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  server01:\n    type: scaleway:instance:Server\n    properties:\n      name: tf-server-vpn\n      type: PLAY2-MICRO\n      image: openvpn\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      privateNetworkId: ${pn01.id}\n      serverId: ${server01.id}\n  rt01:\n    type: scaleway:network:Route\n    properties:\n      vpcId: ${vpc01.id}\n      description: tf-route-vpn\n      tags:\n        - tf\n        - route\n      destination: 10.0.0.0/24\n      nexthopResourceId: ${pnic01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With Baremetal\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"tf-vpc-vpn\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"tf-pn-vpn\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst myOs = scaleway.elasticmetal.getOs({\n    zone: \"fr-par-2\",\n    name: \"Ubuntu\",\n    version: \"22.04 LTS (Jammy Jellyfish)\",\n});\nconst myOffer = scaleway.elasticmetal.getOffer({\n    zone: \"fr-par-2\",\n    name: \"EM-B112X-SSD\",\n});\nconst privateNetwork = scaleway.elasticmetal.getOption({\n    zone: \"fr-par-2\",\n    name: \"Private Network\",\n});\nconst myKey = scaleway.iam.getSshKey({\n    name: \"main\",\n});\nconst myServer = new scaleway.elasticmetal.Server(\"my_server\", {\n    zone: \"fr-par-2\",\n    offer: myOffer.then(myOffer =\u003e myOffer.offerId),\n    os: myOs.then(myOs =\u003e myOs.osId),\n    sshKeyIds: [myKey.then(myKey =\u003e myKey.id)],\n    options: [{\n        id: privateNetwork.then(privateNetwork =\u003e privateNetwork.optionId),\n    }],\n    privateNetworks: [{\n        id: pn01.id,\n    }],\n});\nconst rt01 = new scaleway.network.Route(\"rt01\", {\n    vpcId: vpc01.id,\n    description: \"tf-route-vpn\",\n    tags: [\n        \"tf\",\n        \"route\",\n    ],\n    destination: \"10.0.0.0/24\",\n    nexthopResourceId: myServer.privateNetworks.apply(privateNetworks =\u003e privateNetworks?.[0]?.mappingId),\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"tf-vpc-vpn\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"tf-pn-vpn\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\nmy_os = scaleway.elasticmetal.get_os(zone=\"fr-par-2\",\n    name=\"Ubuntu\",\n    version=\"22.04 LTS (Jammy Jellyfish)\")\nmy_offer = scaleway.elasticmetal.get_offer(zone=\"fr-par-2\",\n    name=\"EM-B112X-SSD\")\nprivate_network = scaleway.elasticmetal.get_option(zone=\"fr-par-2\",\n    name=\"Private Network\")\nmy_key = scaleway.iam.get_ssh_key(name=\"main\")\nmy_server = scaleway.elasticmetal.Server(\"my_server\",\n    zone=\"fr-par-2\",\n    offer=my_offer.offer_id,\n    os=my_os.os_id,\n    ssh_key_ids=[my_key.id],\n    options=[{\n        \"id\": private_network.option_id,\n    }],\n    private_networks=[{\n        \"id\": pn01.id,\n    }])\nrt01 = scaleway.network.Route(\"rt01\",\n    vpc_id=vpc01.id,\n    description=\"tf-route-vpn\",\n    tags=[\n        \"tf\",\n        \"route\",\n    ],\n    destination=\"10.0.0.0/24\",\n    nexthop_resource_id=my_server.private_networks[0].mapping_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"tf-vpc-vpn\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"tf-pn-vpn\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var myOs = Scaleway.Elasticmetal.GetOs.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"Ubuntu\",\n        Version = \"22.04 LTS (Jammy Jellyfish)\",\n    });\n\n    var myOffer = Scaleway.Elasticmetal.GetOffer.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"EM-B112X-SSD\",\n    });\n\n    var privateNetwork = Scaleway.Elasticmetal.GetOption.Invoke(new()\n    {\n        Zone = \"fr-par-2\",\n        Name = \"Private Network\",\n    });\n\n    var myKey = Scaleway.Iam.GetSshKey.Invoke(new()\n    {\n        Name = \"main\",\n    });\n\n    var myServer = new Scaleway.Elasticmetal.Server(\"my_server\", new()\n    {\n        Zone = \"fr-par-2\",\n        Offer = myOffer.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Os = myOs.Apply(getOsResult =\u003e getOsResult.OsId),\n        SshKeyIds = new[]\n        {\n            myKey.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n        Options = new[]\n        {\n            new Scaleway.Elasticmetal.Inputs.ServerOptionArgs\n            {\n                Id = privateNetwork.Apply(getOptionResult =\u003e getOptionResult.OptionId),\n            },\n        },\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Elasticmetal.Inputs.ServerPrivateNetworkArgs\n            {\n                Id = pn01.Id,\n            },\n        },\n    });\n\n    var rt01 = new Scaleway.Network.Route(\"rt01\", new()\n    {\n        VpcId = vpc01.Id,\n        Description = \"tf-route-vpn\",\n        Tags = new[]\n        {\n            \"tf\",\n            \"route\",\n        },\n        Destination = \"10.0.0.0/24\",\n        NexthopResourceId = myServer.PrivateNetworks.Apply(privateNetworks =\u003e privateNetworks[0]?.MappingId),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/elasticmetal\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"tf-vpc-vpn\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"tf-pn-vpn\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOs, err := elasticmetal.GetOs(ctx, \u0026elasticmetal.GetOsArgs{\n\t\t\tZone:    pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName:    pulumi.StringRef(\"Ubuntu\"),\n\t\t\tVersion: pulumi.StringRef(\"22.04 LTS (Jammy Jellyfish)\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyOffer, err := elasticmetal.GetOffer(ctx, \u0026elasticmetal.GetOfferArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"EM-B112X-SSD\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateNetwork, err := elasticmetal.GetOption(ctx, \u0026elasticmetal.GetOptionArgs{\n\t\t\tZone: pulumi.StringRef(\"fr-par-2\"),\n\t\t\tName: pulumi.StringRef(\"Private Network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyKey, err := iam.LookupSshKey(ctx, \u0026iam.LookupSshKeyArgs{\n\t\t\tName: pulumi.StringRef(\"main\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyServer, err := elasticmetal.NewServer(ctx, \"my_server\", \u0026elasticmetal.ServerArgs{\n\t\t\tZone:  pulumi.String(\"fr-par-2\"),\n\t\t\tOffer: pulumi.String(pulumi.String(myOffer.OfferId)),\n\t\t\tOs:    pulumi.String(pulumi.String(myOs.OsId)),\n\t\t\tSshKeyIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(pulumi.String(myKey.Id)),\n\t\t\t},\n\t\t\tOptions: elasticmetal.ServerOptionArray{\n\t\t\t\t\u0026elasticmetal.ServerOptionArgs{\n\t\t\t\t\tId: pulumi.String(privateNetwork.OptionId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPrivateNetworks: elasticmetal.ServerPrivateNetworkArray{\n\t\t\t\t\u0026elasticmetal.ServerPrivateNetworkArgs{\n\t\t\t\t\tId: pn01.ID(),\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 = network.NewRoute(ctx, \"rt01\", \u0026network.RouteArgs{\n\t\t\tVpcId:       vpc01.ID(),\n\t\t\tDescription: pulumi.String(\"tf-route-vpn\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tf\"),\n\t\t\t\tpulumi.String(\"route\"),\n\t\t\t},\n\t\t\tDestination: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tNexthopResourceId: pulumi.String(myServer.PrivateNetworks.ApplyT(func(privateNetworks []elasticmetal.ServerPrivateNetwork) (*string, error) {\n\t\t\t\treturn \u0026privateNetworks[0].MappingId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.elasticmetal.ElasticmetalFunctions;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOsArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.GetOptionArgs;\nimport com.pulumi.scaleway.iam.IamFunctions;\nimport com.pulumi.scaleway.iam.inputs.GetSshKeyArgs;\nimport com.pulumi.scaleway.elasticmetal.Server;\nimport com.pulumi.scaleway.elasticmetal.ServerArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.ServerOptionArgs;\nimport com.pulumi.scaleway.elasticmetal.inputs.ServerPrivateNetworkArgs;\nimport com.pulumi.scaleway.network.Route;\nimport com.pulumi.scaleway.network.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"tf-vpc-vpn\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"tf-pn-vpn\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        final var myOs = ElasticmetalFunctions.getOs(GetOsArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"Ubuntu\")\n            .version(\"22.04 LTS (Jammy Jellyfish)\")\n            .build());\n\n        final var myOffer = ElasticmetalFunctions.getOffer(GetOfferArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"EM-B112X-SSD\")\n            .build());\n\n        final var privateNetwork = ElasticmetalFunctions.getOption(GetOptionArgs.builder()\n            .zone(\"fr-par-2\")\n            .name(\"Private Network\")\n            .build());\n\n        final var myKey = IamFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"main\")\n            .build());\n\n        var myServer = new Server(\"myServer\", ServerArgs.builder()\n            .zone(\"fr-par-2\")\n            .offer(myOffer.offerId())\n            .os(myOs.osId())\n            .sshKeyIds(myKey.id())\n            .options(ServerOptionArgs.builder()\n                .id(privateNetwork.optionId())\n                .build())\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .id(pn01.id())\n                .build())\n            .build());\n\n        var rt01 = new Route(\"rt01\", RouteArgs.builder()\n            .vpcId(vpc01.id())\n            .description(\"tf-route-vpn\")\n            .tags(            \n                \"tf\",\n                \"route\")\n            .destination(\"10.0.0.0/24\")\n            .nexthopResourceId(myServer.privateNetworks().applyValue(_privateNetworks -\u003e _privateNetworks[0].mappingId()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: tf-vpc-vpn\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: tf-pn-vpn\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  myServer:\n    type: scaleway:elasticmetal:Server\n    name: my_server\n    properties:\n      zone: fr-par-2\n      offer: ${myOffer.offerId}\n      os: ${myOs.osId}\n      sshKeyIds:\n        - ${myKey.id}\n      options:\n        - id: ${privateNetwork.optionId}\n      privateNetworks:\n        - id: ${pn01.id}\n  rt01:\n    type: scaleway:network:Route\n    properties:\n      vpcId: ${vpc01.id}\n      description: tf-route-vpn\n      tags:\n        - tf\n        - route\n      destination: 10.0.0.0/24\n      nexthopResourceId: ${myServer.privateNetworks[0].mappingId}\nvariables:\n  myOs:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOs\n      arguments:\n        zone: fr-par-2\n        name: Ubuntu\n        version: 22.04 LTS (Jammy Jellyfish)\n  myOffer:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOffer\n      arguments:\n        zone: fr-par-2\n        name: EM-B112X-SSD\n  privateNetwork:\n    fn::invoke:\n      function: scaleway:elasticmetal:getOption\n      arguments:\n        zone: fr-par-2\n        name: Private Network\n  myKey:\n    fn::invoke:\n      function: scaleway:iam:getSshKey\n      arguments:\n        name: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With VPC Connector\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"tf-vpc-source\"});\nconst vpc02 = new scaleway.network.Vpc(\"vpc02\", {name: \"tf-vpc-target\"});\nconst main = new scaleway.network.Connector(\"main\", {\n    name: \"tf-conn-route\",\n    vpcId: vpc01.id,\n    targetVpcId: vpc02.id,\n});\nconst rt01 = new scaleway.network.Route(\"rt01\", {\n    vpcId: vpc01.id,\n    description: \"tf-route-connector\",\n    tags: [\n        \"tf\",\n        \"route\",\n    ],\n    destination: \"10.0.0.0/24\",\n    nexthopVpcConnectorId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"tf-vpc-source\")\nvpc02 = scaleway.network.Vpc(\"vpc02\", name=\"tf-vpc-target\")\nmain = scaleway.network.Connector(\"main\",\n    name=\"tf-conn-route\",\n    vpc_id=vpc01.id,\n    target_vpc_id=vpc02.id)\nrt01 = scaleway.network.Route(\"rt01\",\n    vpc_id=vpc01.id,\n    description=\"tf-route-connector\",\n    tags=[\n        \"tf\",\n        \"route\",\n    ],\n    destination=\"10.0.0.0/24\",\n    nexthop_vpc_connector_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"tf-vpc-source\",\n    });\n\n    var vpc02 = new Scaleway.Network.Vpc(\"vpc02\", new()\n    {\n        Name = \"tf-vpc-target\",\n    });\n\n    var main = new Scaleway.Network.Connector(\"main\", new()\n    {\n        Name = \"tf-conn-route\",\n        VpcId = vpc01.Id,\n        TargetVpcId = vpc02.Id,\n    });\n\n    var rt01 = new Scaleway.Network.Route(\"rt01\", new()\n    {\n        VpcId = vpc01.Id,\n        Description = \"tf-route-connector\",\n        Tags = new[]\n        {\n            \"tf\",\n            \"route\",\n        },\n        Destination = \"10.0.0.0/24\",\n        NexthopVpcConnectorId = main.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"tf-vpc-source\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc02, err := network.NewVpc(ctx, \"vpc02\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"tf-vpc-target\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmain, err := network.NewConnector(ctx, \"main\", \u0026network.ConnectorArgs{\n\t\t\tName:        pulumi.String(\"tf-conn-route\"),\n\t\t\tVpcId:       vpc01.ID(),\n\t\t\tTargetVpcId: vpc02.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewRoute(ctx, \"rt01\", \u0026network.RouteArgs{\n\t\t\tVpcId:       vpc01.ID(),\n\t\t\tDescription: pulumi.String(\"tf-route-connector\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tf\"),\n\t\t\t\tpulumi.String(\"route\"),\n\t\t\t},\n\t\t\tDestination:           pulumi.String(\"10.0.0.0/24\"),\n\t\t\tNexthopVpcConnectorId: main.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.pulumi.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.Connector;\nimport com.pulumi.scaleway.network.ConnectorArgs;\nimport com.pulumi.scaleway.network.Route;\nimport com.pulumi.scaleway.network.RouteArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"tf-vpc-source\")\n            .build());\n\n        var vpc02 = new Vpc(\"vpc02\", VpcArgs.builder()\n            .name(\"tf-vpc-target\")\n            .build());\n\n        var main = new Connector(\"main\", ConnectorArgs.builder()\n            .name(\"tf-conn-route\")\n            .vpcId(vpc01.id())\n            .targetVpcId(vpc02.id())\n            .build());\n\n        var rt01 = new Route(\"rt01\", RouteArgs.builder()\n            .vpcId(vpc01.id())\n            .description(\"tf-route-connector\")\n            .tags(            \n                \"tf\",\n                \"route\")\n            .destination(\"10.0.0.0/24\")\n            .nexthopVpcConnectorId(main.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: tf-vpc-source\n  vpc02:\n    type: scaleway:network:Vpc\n    properties:\n      name: tf-vpc-target\n  main:\n    type: scaleway:network:Connector\n    properties:\n      name: tf-conn-route\n      vpcId: ${vpc01.id}\n      targetVpcId: ${vpc02.id}\n  rt01:\n    type: scaleway:network:Route\n    properties:\n      vpcId: ${vpc01.id}\n      description: tf-route-connector\n      tags:\n        - tf\n        - route\n      destination: 10.0.0.0/24\n      nexthopVpcConnectorId: ${main.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutes can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/vpcRoute:VpcRoute main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the route (RFC 3339 format).\n"
                },
                "description": {
                    "type": "string",
                    "description": "The route description.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination of the route.\n"
                },
                "nexthopPrivateNetworkId": {
                    "type": "string",
                    "description": "The ID of the nexthop private network.\n"
                },
                "nexthopResourceId": {
                    "type": "string",
                    "description": "The ID of the nexthop resource.\n"
                },
                "nexthopVpcConnectorId": {
                    "type": "string",
                    "description": "The ID of the nexthop VPC Connector.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the route.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the route.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the route (RFC 3339 format).\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC ID the route belongs to.\n"
                }
            },
            "required": [
                "createdAt",
                "updatedAt",
                "vpcId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The route description.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination of the route.\n"
                },
                "nexthopPrivateNetworkId": {
                    "type": "string",
                    "description": "The ID of the nexthop private network.\n"
                },
                "nexthopResourceId": {
                    "type": "string",
                    "description": "The ID of the nexthop resource.\n"
                },
                "nexthopVpcConnectorId": {
                    "type": "string",
                    "description": "The ID of the nexthop VPC Connector.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the route.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags to associate with the route.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The VPC ID the route belongs to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "vpcId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcRoute resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the route (RFC 3339 format).\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The route description.\n"
                    },
                    "destination": {
                        "type": "string",
                        "description": "The destination of the route.\n"
                    },
                    "nexthopPrivateNetworkId": {
                        "type": "string",
                        "description": "The ID of the nexthop private network.\n"
                    },
                    "nexthopResourceId": {
                        "type": "string",
                        "description": "The ID of the nexthop resource.\n"
                    },
                    "nexthopVpcConnectorId": {
                        "type": "string",
                        "description": "The ID of the nexthop VPC Connector.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the route.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags to associate with the route.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the route (RFC 3339 format).\n"
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "The VPC ID the route belongs to.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/vpcroute.VpcRoute has been deprecated in favor of scaleway.network/route.Route"
        },
        "scaleway:index/webhosting:Webhosting": {
            "description": "Creates and manages Scaleway Web Hostings.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/webhosting/hosting-api/).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst byName = scaleway.hosting.getOffer({\n    name: \"lite\",\n    controlPanel: \"Cpanel\",\n});\nconst main = new scaleway.hosting.Hosting(\"main\", {\n    offerId: byName.then(byName =\u003e byName.offerId),\n    email: \"your@email.com\",\n    domain: \"yourdomain.com\",\n    tags: [\n        \"webhosting\",\n        \"provider\",\n        \"terraform\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nby_name = scaleway.hosting.get_offer(name=\"lite\",\n    control_panel=\"Cpanel\")\nmain = scaleway.hosting.Hosting(\"main\",\n    offer_id=by_name.offer_id,\n    email=\"your@email.com\",\n    domain=\"yourdomain.com\",\n    tags=[\n        \"webhosting\",\n        \"provider\",\n        \"terraform\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var byName = Scaleway.Hosting.GetOffer.Invoke(new()\n    {\n        Name = \"lite\",\n        ControlPanel = \"Cpanel\",\n    });\n\n    var main = new Scaleway.Hosting.Hosting(\"main\", new()\n    {\n        OfferId = byName.Apply(getOfferResult =\u003e getOfferResult.OfferId),\n        Email = \"your@email.com\",\n        Domain = \"yourdomain.com\",\n        Tags = new[]\n        {\n            \"webhosting\",\n            \"provider\",\n            \"terraform\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/hosting\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbyName, err := hosting.GetOffer(ctx, \u0026hosting.GetOfferArgs{\n\t\t\tName:         pulumi.StringRef(\"lite\"),\n\t\t\tControlPanel: pulumi.StringRef(\"Cpanel\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = hosting.NewHosting(ctx, \"main\", \u0026hosting.HostingArgs{\n\t\t\tOfferId: pulumi.String(pulumi.String(byName.OfferId)),\n\t\t\tEmail:   pulumi.String(\"your@email.com\"),\n\t\t\tDomain:  pulumi.String(\"yourdomain.com\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"webhosting\"),\n\t\t\t\tpulumi.String(\"provider\"),\n\t\t\t\tpulumi.String(\"terraform\"),\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.scaleway.hosting.HostingFunctions;\nimport com.pulumi.scaleway.hosting.inputs.GetOfferArgs;\nimport com.pulumi.scaleway.hosting.Hosting;\nimport com.pulumi.scaleway.hosting.HostingArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 byName = HostingFunctions.getOffer(GetOfferArgs.builder()\n            .name(\"lite\")\n            .controlPanel(\"Cpanel\")\n            .build());\n\n        var main = new Hosting(\"main\", HostingArgs.builder()\n            .offerId(byName.offerId())\n            .email(\"your@email.com\")\n            .domain(\"yourdomain.com\")\n            .tags(            \n                \"webhosting\",\n                \"provider\",\n                \"terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:hosting:Hosting\n    properties:\n      offerId: ${byName.offerId}\n      email: your@email.com\n      domain: yourdomain.com\n      tags:\n        - webhosting\n        - provider\n        - terraform\nvariables:\n  byName:\n    fn::invoke:\n      function: scaleway:hosting:getOffer\n      arguments:\n        name: lite\n        controlPanel: Cpanel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHostings can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:index/webhosting:Webhosting hosting01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "cpanelUrls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/WebhostingCpanelUrl:WebhostingCpanelUrl"
                    },
                    "description": "The URL to connect to cPanel Dashboard and to Webmail interface.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Date and time of hosting's creation (RFC 3339 format).\n"
                },
                "dnsStatus": {
                    "type": "string",
                    "description": "The DNS status of the hosting.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "The domain name of the hosting.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The contact email of the client for the hosting.\n"
                },
                "nameServers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/WebhostingNameServer:WebhostingNameServer"
                    },
                    "description": "List of nameservers associated with the webhosting."
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the selected offer for the hosting.\n"
                },
                "offerName": {
                    "type": "string",
                    "description": "The name of the active offer.\n"
                },
                "optionIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the selected options for the hosting.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/WebhostingOption:WebhostingOption"
                    },
                    "description": "The active options of the hosting.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "(Deprecated) The organization ID the hosting is associated with.\n",
                    "deprecationMessage": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003efield is deprecated and will be removed in the next major version."
                },
                "platformHostname": {
                    "type": "string",
                    "description": "The hostname of the host platform.\n"
                },
                "platformNumber": {
                    "type": "integer",
                    "description": "The number of the host platform.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n"
                },
                "records": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:index/WebhostingRecord:WebhostingRecord"
                    },
                    "description": "List of DNS records associated with the webhosting."
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Hosting.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The hosting status.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the hosting.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Date and time of hosting's last update (RFC 3339 format).\n"
                },
                "username": {
                    "type": "string",
                    "description": "The main hosting cPanel username.\n"
                }
            },
            "required": [
                "cpanelUrls",
                "createdAt",
                "dnsStatus",
                "domain",
                "email",
                "nameServers",
                "offerId",
                "offerName",
                "options",
                "organizationId",
                "platformHostname",
                "platformNumber",
                "projectId",
                "records",
                "status",
                "tags",
                "updatedAt",
                "username"
            ],
            "inputProperties": {
                "domain": {
                    "type": "string",
                    "description": "The domain name of the hosting.\n"
                },
                "email": {
                    "type": "string",
                    "description": "The contact email of the client for the hosting.\n"
                },
                "offerId": {
                    "type": "string",
                    "description": "The ID of the selected offer for the hosting.\n"
                },
                "optionIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of the selected options for the hosting.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region of the Hosting.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the hosting.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "email",
                "offerId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Webhosting resources.\n",
                "properties": {
                    "cpanelUrls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/WebhostingCpanelUrl:WebhostingCpanelUrl"
                        },
                        "description": "The URL to connect to cPanel Dashboard and to Webmail interface.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Date and time of hosting's creation (RFC 3339 format).\n"
                    },
                    "dnsStatus": {
                        "type": "string",
                        "description": "The DNS status of the hosting.\n"
                    },
                    "domain": {
                        "type": "string",
                        "description": "The domain name of the hosting.\n"
                    },
                    "email": {
                        "type": "string",
                        "description": "The contact email of the client for the hosting.\n"
                    },
                    "nameServers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/WebhostingNameServer:WebhostingNameServer"
                        },
                        "description": "List of nameservers associated with the webhosting."
                    },
                    "offerId": {
                        "type": "string",
                        "description": "The ID of the selected offer for the hosting.\n"
                    },
                    "offerName": {
                        "type": "string",
                        "description": "The name of the active offer.\n"
                    },
                    "optionIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The IDs of the selected options for the hosting.\n"
                    },
                    "options": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/WebhostingOption:WebhostingOption"
                        },
                        "description": "The active options of the hosting.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "(Deprecated) The organization ID the hosting is associated with.\n",
                        "deprecationMessage": "The\u003cspan pulumi-lang-nodejs=\" organizationId \" pulumi-lang-dotnet=\" OrganizationId \" pulumi-lang-go=\" organizationId \" pulumi-lang-python=\" organization_id \" pulumi-lang-yaml=\" organizationId \" pulumi-lang-java=\" organizationId \"\u003e organizationId \u003c/span\u003efield is deprecated and will be removed in the next major version."
                    },
                    "platformHostname": {
                        "type": "string",
                        "description": "The hostname of the host platform.\n"
                    },
                    "platformNumber": {
                        "type": "integer",
                        "description": "The number of the host platform.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the VPC is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "records": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:index/WebhostingRecord:WebhostingRecord"
                        },
                        "description": "List of DNS records associated with the webhosting."
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region of the Hosting.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The hosting status.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the hosting.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Date and time of hosting's last update (RFC 3339 format).\n"
                    },
                    "username": {
                        "type": "string",
                        "description": "The main hosting cPanel username.\n"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "scaleway.index/webhosting.Webhosting has been deprecated in favor of scaleway.hosting/hosting.Hosting"
        },
        "scaleway:inference/deployment:Deployment": {
            "description": "Creates and manages Scaleway Managed Inference deployments.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/inference/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst myModel = scaleway.inference.getModel({\n    name: \"meta/llama-3.1-8b-instruct:fp8\",\n});\nconst deployment = new scaleway.inference.Deployment(\"deployment\", {\n    name: \"tf-inference-deployment\",\n    nodeType: \"L4\",\n    modelName: myModel.then(myModel =\u003e myModel.id),\n    publicEndpoint: {\n        isEnabled: true,\n    },\n    acceptEula: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nmy_model = scaleway.inference.get_model(name=\"meta/llama-3.1-8b-instruct:fp8\")\ndeployment = scaleway.inference.Deployment(\"deployment\",\n    name=\"tf-inference-deployment\",\n    node_type=\"L4\",\n    model_name=my_model.id,\n    public_endpoint={\n        \"is_enabled\": True,\n    },\n    accept_eula=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myModel = Scaleway.Inference.GetModel.Invoke(new()\n    {\n        Name = \"meta/llama-3.1-8b-instruct:fp8\",\n    });\n\n    var deployment = new Scaleway.Inference.Deployment(\"deployment\", new()\n    {\n        Name = \"tf-inference-deployment\",\n        NodeType = \"L4\",\n        ModelName = myModel.Apply(getModelResult =\u003e getModelResult.Id),\n        PublicEndpoint = new Scaleway.Inference.Inputs.DeploymentPublicEndpointArgs\n        {\n            IsEnabled = true,\n        },\n        AcceptEula = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/inference\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyModel, err := inference.LookupModel(ctx, \u0026inference.LookupModelArgs{\n\t\t\tName: pulumi.StringRef(\"meta/llama-3.1-8b-instruct:fp8\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = inference.NewDeployment(ctx, \"deployment\", \u0026inference.DeploymentArgs{\n\t\t\tName:      pulumi.String(\"tf-inference-deployment\"),\n\t\t\tNodeType:  pulumi.String(\"L4\"),\n\t\t\tModelName: myModel.Id,\n\t\t\tPublicEndpoint: \u0026inference.DeploymentPublicEndpointArgs{\n\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAcceptEula: 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.scaleway.inference.InferenceFunctions;\nimport com.pulumi.scaleway.inference.inputs.GetModelArgs;\nimport com.pulumi.scaleway.inference.Deployment;\nimport com.pulumi.scaleway.inference.DeploymentArgs;\nimport com.pulumi.scaleway.inference.inputs.DeploymentPublicEndpointArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myModel = InferenceFunctions.getModel(GetModelArgs.builder()\n            .name(\"meta/llama-3.1-8b-instruct:fp8\")\n            .build());\n\n        var deployment = new Deployment(\"deployment\", DeploymentArgs.builder()\n            .name(\"tf-inference-deployment\")\n            .nodeType(\"L4\")\n            .modelName(myModel.id())\n            .publicEndpoint(DeploymentPublicEndpointArgs.builder()\n                .isEnabled(true)\n                .build())\n            .acceptEula(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  deployment:\n    type: scaleway:inference:Deployment\n    properties:\n      name: tf-inference-deployment\n      nodeType: L4\n      modelName: ${myModel.id}\n      publicEndpoint:\n        isEnabled: true\n      acceptEula: true\nvariables:\n  myModel:\n    fn::invoke:\n      function: scaleway:inference:getModel\n      arguments:\n        name: meta/llama-3.1-8b-instruct:fp8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFunctions can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:inference/deployment:Deployment deployment fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "acceptEula": {
                    "type": "boolean",
                    "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the deployment.\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool.\n"
                },
                "modelId": {
                    "type": "string",
                    "description": "The model id used for the deployment.\n"
                },
                "modelName": {
                    "type": "string",
                    "description": "The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The deployment name.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n"
                },
                "privateEndpoint": {
                    "$ref": "#/types/scaleway:inference/DeploymentPrivateEndpoint:DeploymentPrivateEndpoint",
                    "description": "Configuration of the deployment's private endpoint.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:inference/DeploymentPrivateIp:DeploymentPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the deployment.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n"
                },
                "publicEndpoint": {
                    "$ref": "#/types/scaleway:inference/DeploymentPublicEndpoint:DeploymentPublicEndpoint",
                    "description": "Configuration of the deployment's public endpoint.\n"
                },
                "quantization": {
                    "type": "integer",
                    "description": "The number of bits each model parameter should be quantized to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the pool.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the deployment.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the deployment.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the deployment.\n"
                }
            },
            "required": [
                "createdAt",
                "modelId",
                "modelName",
                "name",
                "nodeType",
                "privateIps",
                "projectId",
                "size",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "acceptEula": {
                    "type": "boolean",
                    "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                },
                "maxSize": {
                    "type": "integer",
                    "description": "The maximum size of the pool.\n"
                },
                "minSize": {
                    "type": "integer",
                    "description": "The minimum size of the pool.\n"
                },
                "modelId": {
                    "type": "string",
                    "description": "The model id used for the deployment.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The deployment name.\n"
                },
                "nodeType": {
                    "type": "string",
                    "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n",
                    "willReplaceOnChanges": true
                },
                "privateEndpoint": {
                    "$ref": "#/types/scaleway:inference/DeploymentPrivateEndpoint:DeploymentPrivateEndpoint",
                    "description": "Configuration of the deployment's private endpoint.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:inference/DeploymentPrivateIp:DeploymentPrivateIp"
                    },
                    "description": "The private IPv4 address associated with the deployment.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "publicEndpoint": {
                    "$ref": "#/types/scaleway:inference/DeploymentPublicEndpoint:DeploymentPublicEndpoint",
                    "description": "Configuration of the deployment's public endpoint.\n"
                },
                "quantization": {
                    "type": "integer",
                    "description": "The number of bits each model parameter should be quantized to"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the deployment.\n"
                }
            },
            "requiredInputs": [
                "modelId",
                "nodeType"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Deployment resources.\n",
                "properties": {
                    "acceptEula": {
                        "type": "boolean",
                        "description": "Some models (e.g Meta Llama) require end-user license agreements. Set \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 to accept.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the deployment.\n"
                    },
                    "maxSize": {
                        "type": "integer",
                        "description": "The maximum size of the pool.\n"
                    },
                    "minSize": {
                        "type": "integer",
                        "description": "The minimum size of the pool.\n"
                    },
                    "modelId": {
                        "type": "string",
                        "description": "The model id used for the deployment.\n",
                        "willReplaceOnChanges": true
                    },
                    "modelName": {
                        "type": "string",
                        "description": "The model name used for the deployment. Model names can be found in Console or using Scaleway's CLI (`scw inference model list`)\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The deployment name.\n"
                    },
                    "nodeType": {
                        "type": "string",
                        "description": "The node type to use for the deployment. Node types can be found using Scaleway's CLI (`scw inference node-type list`)\n",
                        "willReplaceOnChanges": true
                    },
                    "privateEndpoint": {
                        "$ref": "#/types/scaleway:inference/DeploymentPrivateEndpoint:DeploymentPrivateEndpoint",
                        "description": "Configuration of the deployment's private endpoint.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:inference/DeploymentPrivateIp:DeploymentPrivateIp"
                        },
                        "description": "The private IPv4 address associated with the deployment.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "publicEndpoint": {
                        "$ref": "#/types/scaleway:inference/DeploymentPublicEndpoint:DeploymentPublicEndpoint",
                        "description": "Configuration of the deployment's public endpoint.\n"
                    },
                    "quantization": {
                        "type": "integer",
                        "description": "The number of bits each model parameter should be quantized to"
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the deployment is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the pool.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the deployment.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the deployment.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the deployment.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/inferenceDeployment:InferenceDeployment"
                }
            ]
        },
        "scaleway:inference/model:Model": {
            "description": "The\u003cspan pulumi-lang-nodejs=\" scaleway.inference.Model \" pulumi-lang-dotnet=\" scaleway.inference.Model \" pulumi-lang-go=\" inference.Model \" pulumi-lang-python=\" inference.Model \" pulumi-lang-yaml=\" scaleway.inference.Model \" pulumi-lang-java=\" scaleway.inference.Model \"\u003e scaleway.inference.Model \u003c/span\u003eresource allows you to upload and manage inference models in the Scaleway Inference ecosystem. Once registered, a model can be used in any\u003cspan pulumi-lang-nodejs=\" scaleway.inference.Deployment \" pulumi-lang-dotnet=\" scaleway.inference.Deployment \" pulumi-lang-go=\" inference.Deployment \" pulumi-lang-python=\" inference.Deployment \" pulumi-lang-yaml=\" scaleway.inference.Deployment \" pulumi-lang-java=\" scaleway.inference.Deployment \"\u003e scaleway.inference.Deployment \u003c/span\u003eresource.\n\n\u003e **Security Best Practice:**\nFor enhanced security, we recommend using the \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e write-only argument instead of the regular \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.\n\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Basic creation of an inference model\nconst test = new scaleway.inference.Model(\"test\", {\n    name: \"my-awesome-model\",\n    url: \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secret: \"my-secret-token\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Basic creation of an inference model\ntest = scaleway.inference.Model(\"test\",\n    name=\"my-awesome-model\",\n    url=\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secret=\"my-secret-token\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Basic creation of an inference model\n    var test = new Scaleway.Inference.Model(\"test\", new()\n    {\n        Name = \"my-awesome-model\",\n        Url = \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n        Secret = \"my-secret-token\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/inference\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Basic creation of an inference model\n\t\t_, err := inference.NewModel(ctx, \"test\", \u0026inference.ModelArgs{\n\t\t\tName:   pulumi.String(\"my-awesome-model\"),\n\t\t\tUrl:    pulumi.String(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\"),\n\t\t\tSecret: pulumi.String(\"my-secret-token\"),\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.scaleway.inference.Model;\nimport com.pulumi.scaleway.inference.ModelArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 creation of an inference model\n        var test = new Model(\"test\", ModelArgs.builder()\n            .name(\"my-awesome-model\")\n            .url(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\")\n            .secret(\"my-secret-token\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Basic creation of an inference model\n  test:\n    type: scaleway:inference:Model\n    properties:\n      name: my-awesome-model\n      url: https://huggingface.co/agentica-org/DeepCoder-14B-Preview\n      secret: my-secret-token\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Deploy your own model on your managed inference\nconst myModel = new scaleway.inference.Model(\"my_model\", {\n    name: \"my-awesome-model\",\n    url: \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secret: \"my-secret-token\",\n});\nconst myDeployment = new scaleway.inference.Deployment(\"my_deployment\", {\n    name: \"test-inference-deployment-basic\",\n    nodeType: \"H100\",\n    modelId: myModel.id,\n    publicEndpoint: {\n        isEnabled: true,\n    },\n    acceptEula: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Deploy your own model on your managed inference\nmy_model = scaleway.inference.Model(\"my_model\",\n    name=\"my-awesome-model\",\n    url=\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secret=\"my-secret-token\")\nmy_deployment = scaleway.inference.Deployment(\"my_deployment\",\n    name=\"test-inference-deployment-basic\",\n    node_type=\"H100\",\n    model_id=my_model.id,\n    public_endpoint={\n        \"is_enabled\": True,\n    },\n    accept_eula=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Deploy your own model on your managed inference\n    var myModel = new Scaleway.Inference.Model(\"my_model\", new()\n    {\n        Name = \"my-awesome-model\",\n        Url = \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n        Secret = \"my-secret-token\",\n    });\n\n    var myDeployment = new Scaleway.Inference.Deployment(\"my_deployment\", new()\n    {\n        Name = \"test-inference-deployment-basic\",\n        NodeType = \"H100\",\n        ModelId = myModel.Id,\n        PublicEndpoint = new Scaleway.Inference.Inputs.DeploymentPublicEndpointArgs\n        {\n            IsEnabled = true,\n        },\n        AcceptEula = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/inference\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Deploy your own model on your managed inference\n\t\tmyModel, err := inference.NewModel(ctx, \"my_model\", \u0026inference.ModelArgs{\n\t\t\tName:   pulumi.String(\"my-awesome-model\"),\n\t\t\tUrl:    pulumi.String(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\"),\n\t\t\tSecret: pulumi.String(\"my-secret-token\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = inference.NewDeployment(ctx, \"my_deployment\", \u0026inference.DeploymentArgs{\n\t\t\tName:     pulumi.String(\"test-inference-deployment-basic\"),\n\t\t\tNodeType: pulumi.String(\"H100\"),\n\t\t\tModelId:  myModel.ID(),\n\t\t\tPublicEndpoint: \u0026inference.DeploymentPublicEndpointArgs{\n\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAcceptEula: 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.scaleway.inference.Model;\nimport com.pulumi.scaleway.inference.ModelArgs;\nimport com.pulumi.scaleway.inference.Deployment;\nimport com.pulumi.scaleway.inference.DeploymentArgs;\nimport com.pulumi.scaleway.inference.inputs.DeploymentPublicEndpointArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Deploy your own model on your managed inference\n        var myModel = new Model(\"myModel\", ModelArgs.builder()\n            .name(\"my-awesome-model\")\n            .url(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\")\n            .secret(\"my-secret-token\")\n            .build());\n\n        var myDeployment = new Deployment(\"myDeployment\", DeploymentArgs.builder()\n            .name(\"test-inference-deployment-basic\")\n            .nodeType(\"H100\")\n            .modelId(myModel.id())\n            .publicEndpoint(DeploymentPublicEndpointArgs.builder()\n                .isEnabled(true)\n                .build())\n            .acceptEula(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Deploy your own model on your managed inference\n  myModel:\n    type: scaleway:inference:Model\n    name: my_model\n    properties:\n      name: my-awesome-model\n      url: https://huggingface.co/agentica-org/DeepCoder-14B-Preview\n      secret: my-secret-token\n  myDeployment:\n    type: scaleway:inference:Deployment\n    name: my_deployment\n    properties:\n      name: test-inference-deployment-basic\n      nodeType: H100\n      modelId: ${myModel.id}\n      publicEndpoint:\n        isEnabled: true\n      acceptEula: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\n//## Create a model using your model's secret token without storing it in the state\nconst myModelWo = new scaleway.inference.Model(\"my_model_wo\", {\n    name: \"my-awesome-model-wo\",\n    url: \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secretWo: \"my-secret-token\",\n    secretWoVersion: 1,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\n### Create a model using your model's secret token without storing it in the state\nmy_model_wo = scaleway.inference.Model(\"my_model_wo\",\n    name=\"my-awesome-model-wo\",\n    url=\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n    secret_wo=\"my-secret-token\",\n    secret_wo_version=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //## Create a model using your model's secret token without storing it in the state\n    var myModelWo = new Scaleway.Inference.Model(\"my_model_wo\", new()\n    {\n        Name = \"my-awesome-model-wo\",\n        Url = \"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\",\n        SecretWo = \"my-secret-token\",\n        SecretWoVersion = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/inference\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// ## Create a model using your model's secret token without storing it in the state\n\t\t_, err := inference.NewModel(ctx, \"my_model_wo\", \u0026inference.ModelArgs{\n\t\t\tName:            pulumi.String(\"my-awesome-model-wo\"),\n\t\t\tUrl:             pulumi.String(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\"),\n\t\t\tSecretWo:        pulumi.String(\"my-secret-token\"),\n\t\t\tSecretWoVersion: pulumi.Int(1),\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.scaleway.inference.Model;\nimport com.pulumi.scaleway.inference.ModelArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //## Create a model using your model's secret token without storing it in the state\n        var myModelWo = new Model(\"myModelWo\", ModelArgs.builder()\n            .name(\"my-awesome-model-wo\")\n            .url(\"https://huggingface.co/agentica-org/DeepCoder-14B-Preview\")\n            .secretWo(\"my-secret-token\")\n            .secretWoVersion(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ### Create a model using your model's secret token without storing it in the state\n  myModelWo:\n    type: scaleway:inference:Model\n    name: my_model_wo\n    properties:\n      name: my-awesome-model-wo\n      url: https://huggingface.co/agentica-org/DeepCoder-14B-Preview\n      secretWo: my-secret-token\n      secretWoVersion: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nModels can be imported using, `{region}/{id}`, as shown below:\n\n```sh\n$ pulumi import scaleway:inference/model:Model my_model fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the model"
                },
                "description": {
                    "type": "string",
                    "description": "A textual description of the model (if available).\n"
                },
                "hasEula": {
                    "type": "boolean",
                    "description": "Whether the model requires end-user license agreement acceptance before use.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the model. This must be unique within the project.\n"
                },
                "nodesSupports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:inference/ModelNodesSupport:ModelNodesSupport"
                    },
                    "description": "List of supported node types and their quantization options. Each entry contains:\n"
                },
                "parameterSizeBits": {
                    "type": "integer",
                    "description": "Size, in bits, of the model parameters.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission). Conflicts with \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n",
                    "secret": true
                },
                "secretWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nAuthentication token used to pull the model from a private or gated URL in write-only mode. \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e will not be stored in the Terraform state. Only one of \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e should be specified. Requires \u003cspan pulumi-lang-nodejs=\"`secretWoVersion`\" pulumi-lang-dotnet=\"`SecretWoVersion`\" pulumi-lang-go=\"`secretWoVersion`\" pulumi-lang-python=\"`secret_wo_version`\" pulumi-lang-yaml=\"`secretWoVersion`\" pulumi-lang-java=\"`secretWoVersion`\"\u003e`secretWoVersion`\u003c/span\u003e to be set.\n",
                    "secret": true
                },
                "secretWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only secret. Required when using \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n"
                },
                "sizeBytes": {
                    "type": "integer",
                    "description": "Total size, in bytes, of the model archive.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the model (e.g., ready, error, etc.).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags associated with the model.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the model"
                },
                "url": {
                    "type": "string",
                    "description": "The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., \u003chttps://huggingface.co/agentica-org/DeepCoder-14B-Preview\u003e). The URL must be publicly accessible or require valid credentials via \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e\n"
                }
            },
            "required": [
                "createdAt",
                "description",
                "hasEula",
                "name",
                "nodesSupports",
                "parameterSizeBits",
                "projectId",
                "sizeBytes",
                "status",
                "tags",
                "updatedAt",
                "url"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the model. This must be unique within the project.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the deployment is created.\n",
                    "willReplaceOnChanges": true
                },
                "secret": {
                    "type": "string",
                    "description": "Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission). Conflicts with \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "secretWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nAuthentication token used to pull the model from a private or gated URL in write-only mode. \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e will not be stored in the Terraform state. Only one of \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e should be specified. Requires \u003cspan pulumi-lang-nodejs=\"`secretWoVersion`\" pulumi-lang-dotnet=\"`SecretWoVersion`\" pulumi-lang-go=\"`secretWoVersion`\" pulumi-lang-python=\"`secret_wo_version`\" pulumi-lang-yaml=\"`secretWoVersion`\" pulumi-lang-java=\"`secretWoVersion`\"\u003e`secretWoVersion`\u003c/span\u003e to be set.\n",
                    "secret": true
                },
                "secretWoVersion": {
                    "type": "integer",
                    "description": "The version of the write-only secret. Required when using \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "url": {
                    "type": "string",
                    "description": "The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., \u003chttps://huggingface.co/agentica-org/DeepCoder-14B-Preview\u003e). The URL must be publicly accessible or require valid credentials via \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "url"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Model resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the model"
                    },
                    "description": {
                        "type": "string",
                        "description": "A textual description of the model (if available).\n"
                    },
                    "hasEula": {
                        "type": "boolean",
                        "description": "Whether the model requires end-user license agreement acceptance before use.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the model. This must be unique within the project.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodesSupports": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:inference/ModelNodesSupport:ModelNodesSupport"
                        },
                        "description": "List of supported node types and their quantization options. Each entry contains:\n"
                    },
                    "parameterSizeBits": {
                        "type": "integer",
                        "description": "Size, in bits, of the model parameters.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the deployment is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the deployment is created.\n",
                        "willReplaceOnChanges": true
                    },
                    "secret": {
                        "type": "string",
                        "description": "Authentication token used to pull the model from a private or gated URL (e.g., a Hugging Face access token with read permission). Conflicts with \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n",
                        "secret": true,
                        "willReplaceOnChanges": true
                    },
                    "secretWo": {
                        "type": "string",
                        "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\nAuthentication token used to pull the model from a private or gated URL in write-only mode. \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e will not be stored in the Terraform state. Only one of \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e should be specified. Requires \u003cspan pulumi-lang-nodejs=\"`secretWoVersion`\" pulumi-lang-dotnet=\"`SecretWoVersion`\" pulumi-lang-go=\"`secretWoVersion`\" pulumi-lang-python=\"`secret_wo_version`\" pulumi-lang-yaml=\"`secretWoVersion`\" pulumi-lang-java=\"`secretWoVersion`\"\u003e`secretWoVersion`\u003c/span\u003e to be set.\n",
                        "secret": true
                    },
                    "secretWoVersion": {
                        "type": "integer",
                        "description": "The version of the write-only secret. Required when using \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeBytes": {
                        "type": "integer",
                        "description": "Total size, in bytes, of the model archive.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the model (e.g., ready, error, etc.).\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Tags associated with the model.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the model"
                    },
                    "url": {
                        "type": "string",
                        "description": "The HTTPS source URL from which the model will be downloaded. This is typically a Hugging Face repository URL (e.g., \u003chttps://huggingface.co/agentica-org/DeepCoder-14B-Preview\u003e). The URL must be publicly accessible or require valid credentials via \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretWo`\" pulumi-lang-dotnet=\"`SecretWo`\" pulumi-lang-go=\"`secretWo`\" pulumi-lang-python=\"`secret_wo`\" pulumi-lang-yaml=\"`secretWo`\" pulumi-lang-java=\"`secretWo`\"\u003e`secretWo`\u003c/span\u003e\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "scaleway:instance/image:Image": {
            "description": "Creates and manages Scaleway Compute Images.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-images-list-instance-images).\n\n## Example Usage\n\n### From a volume\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst volume = new scaleway.instance.Volume(\"volume\", {\n    type: \"b_ssd\",\n    sizeInGb: 20,\n});\nconst volumeSnapshot = new scaleway.instance.Snapshot(\"volume_snapshot\", {volumeId: volume.id});\nconst volumeImage = new scaleway.instance.Image(\"volume_image\", {\n    name: \"image_from_volume\",\n    rootVolumeId: volumeSnapshot.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvolume = scaleway.instance.Volume(\"volume\",\n    type=\"b_ssd\",\n    size_in_gb=20)\nvolume_snapshot = scaleway.instance.Snapshot(\"volume_snapshot\", volume_id=volume.id)\nvolume_image = scaleway.instance.Image(\"volume_image\",\n    name=\"image_from_volume\",\n    root_volume_id=volume_snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume = new Scaleway.Instance.Volume(\"volume\", new()\n    {\n        Type = \"b_ssd\",\n        SizeInGb = 20,\n    });\n\n    var volumeSnapshot = new Scaleway.Instance.Snapshot(\"volume_snapshot\", new()\n    {\n        VolumeId = volume.Id,\n    });\n\n    var volumeImage = new Scaleway.Instance.Image(\"volume_image\", new()\n    {\n        Name = \"image_from_volume\",\n        RootVolumeId = volumeSnapshot.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume, err := instance.NewVolume(ctx, \"volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"b_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeSnapshot, err := instance.NewSnapshot(ctx, \"volume_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: volume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"volume_image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_from_volume\"),\n\t\t\tRootVolumeId: volumeSnapshot.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.pulumi.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume = new Volume(\"volume\", VolumeArgs.builder()\n            .type(\"b_ssd\")\n            .sizeInGb(20)\n            .build());\n\n        var volumeSnapshot = new Snapshot(\"volumeSnapshot\", SnapshotArgs.builder()\n            .volumeId(volume.id())\n            .build());\n\n        var volumeImage = new Image(\"volumeImage\", ImageArgs.builder()\n            .name(\"image_from_volume\")\n            .rootVolumeId(volumeSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume:\n    type: scaleway:instance:Volume\n    properties:\n      type: b_ssd\n      sizeInGb: 20\n  volumeSnapshot:\n    type: scaleway:instance:Snapshot\n    name: volume_snapshot\n    properties:\n      volumeId: ${volume.id}\n  volumeImage:\n    type: scaleway:instance:Image\n    name: volume_image\n    properties:\n      name: image_from_volume\n      rootVolumeId: ${volumeSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From a server\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n});\nconst serverSnapshot = new scaleway.instance.Snapshot(\"server_snapshot\", {volumeId: main.rootVolume[0].volumeId});\nconst serverImage = new scaleway.instance.Image(\"server_image\", {\n    name: \"image_from_server\",\n    rootVolumeId: serverSnapshot.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\")\nserver_snapshot = scaleway.instance.Snapshot(\"server_snapshot\", volume_id=main[\"rootVolume\"][0][\"volumeId\"])\nserver_image = scaleway.instance.Image(\"server_image\",\n    name=\"image_from_server\",\n    root_volume_id=server_snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n    });\n\n    var serverSnapshot = new Scaleway.Instance.Snapshot(\"server_snapshot\", new()\n    {\n        VolumeId = main.RootVolume[0].VolumeId,\n    });\n\n    var serverImage = new Scaleway.Instance.Image(\"server_image\", new()\n    {\n        Name = \"image_from_server\",\n        RootVolumeId = serverSnapshot.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverSnapshot, err := instance.NewSnapshot(ctx, \"server_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: pulumi.Any(main.RootVolume[0].VolumeId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"server_image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_from_server\"),\n\t\t\tRootVolumeId: serverSnapshot.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.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .build());\n\n        var serverSnapshot = new Snapshot(\"serverSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.rootVolume()[0].volumeId())\n            .build());\n\n        var serverImage = new Image(\"serverImage\", ImageArgs.builder()\n            .name(\"image_from_server\")\n            .rootVolumeId(serverSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n  serverSnapshot:\n    type: scaleway:instance:Snapshot\n    name: server_snapshot\n    properties:\n      volumeId: ${main.rootVolume[0].volumeId}\n  serverImage:\n    type: scaleway:instance:Image\n    name: server_image\n    properties:\n      name: image_from_server\n      rootVolumeId: ${serverSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n});\nconst volume = new scaleway.instance.Volume(\"volume\", {\n    type: \"b_ssd\",\n    sizeInGb: 20,\n});\nconst volumeSnapshot = new scaleway.instance.Snapshot(\"volume_snapshot\", {volumeId: volume.id});\nconst serverSnapshot = new scaleway.instance.Snapshot(\"server_snapshot\", {volumeId: main.rootVolume[0].volumeId});\nconst image = new scaleway.instance.Image(\"image\", {\n    name: \"image_with_extra_volumes\",\n    rootVolumeId: serverSnapshot.id,\n    additionalVolumeIds: [volumeSnapshot.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\")\nvolume = scaleway.instance.Volume(\"volume\",\n    type=\"b_ssd\",\n    size_in_gb=20)\nvolume_snapshot = scaleway.instance.Snapshot(\"volume_snapshot\", volume_id=volume.id)\nserver_snapshot = scaleway.instance.Snapshot(\"server_snapshot\", volume_id=main[\"rootVolume\"][0][\"volumeId\"])\nimage = scaleway.instance.Image(\"image\",\n    name=\"image_with_extra_volumes\",\n    root_volume_id=server_snapshot.id,\n    additional_volume_ids=[volume_snapshot.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n    });\n\n    var volume = new Scaleway.Instance.Volume(\"volume\", new()\n    {\n        Type = \"b_ssd\",\n        SizeInGb = 20,\n    });\n\n    var volumeSnapshot = new Scaleway.Instance.Snapshot(\"volume_snapshot\", new()\n    {\n        VolumeId = volume.Id,\n    });\n\n    var serverSnapshot = new Scaleway.Instance.Snapshot(\"server_snapshot\", new()\n    {\n        VolumeId = main.RootVolume[0].VolumeId,\n    });\n\n    var image = new Scaleway.Instance.Image(\"image\", new()\n    {\n        Name = \"image_with_extra_volumes\",\n        RootVolumeId = serverSnapshot.Id,\n        AdditionalVolumeIds = new[]\n        {\n            volumeSnapshot.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolume, err := instance.NewVolume(ctx, \"volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"b_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeSnapshot, err := instance.NewSnapshot(ctx, \"volume_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: volume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserverSnapshot, err := instance.NewSnapshot(ctx, \"server_snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: pulumi.Any(main.RootVolume[0].VolumeId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewImage(ctx, \"image\", \u0026instance.ImageArgs{\n\t\t\tName:         pulumi.String(\"image_with_extra_volumes\"),\n\t\t\tRootVolumeId: serverSnapshot.ID(),\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tvolumeSnapshot.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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.Image;\nimport com.pulumi.scaleway.instance.ImageArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .build());\n\n        var volume = new Volume(\"volume\", VolumeArgs.builder()\n            .type(\"b_ssd\")\n            .sizeInGb(20)\n            .build());\n\n        var volumeSnapshot = new Snapshot(\"volumeSnapshot\", SnapshotArgs.builder()\n            .volumeId(volume.id())\n            .build());\n\n        var serverSnapshot = new Snapshot(\"serverSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.rootVolume()[0].volumeId())\n            .build());\n\n        var image = new Image(\"image\", ImageArgs.builder()\n            .name(\"image_with_extra_volumes\")\n            .rootVolumeId(serverSnapshot.id())\n            .additionalVolumeIds(volumeSnapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n  volume:\n    type: scaleway:instance:Volume\n    properties:\n      type: b_ssd\n      sizeInGb: 20\n  volumeSnapshot:\n    type: scaleway:instance:Snapshot\n    name: volume_snapshot\n    properties:\n      volumeId: ${volume.id}\n  serverSnapshot:\n    type: scaleway:instance:Snapshot\n    name: server_snapshot\n    properties:\n      volumeId: ${main.rootVolume[0].volumeId}\n  image:\n    type: scaleway:instance:Image\n    properties:\n      name: image_with_extra_volumes\n      rootVolumeId: ${serverSnapshot.id}\n      additionalVolumeIds:\n        - ${volumeSnapshot.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImages can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/image:Image main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                },
                "additionalVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ImageAdditionalVolume:ImageAdditionalVolume"
                    },
                    "description": "The description of the extra volumes attached to the image.\n"
                },
                "architecture": {
                    "type": "string",
                    "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                },
                "creationDate": {
                    "type": "string",
                    "description": "Date of the image creation.\n"
                },
                "fromServerId": {
                    "type": "string",
                    "description": "ID of the server the image is based on (in case it is a backup).\n"
                },
                "modificationDate": {
                    "type": "string",
                    "description": "Date of image latest update.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the image is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the image is associated with.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "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 if the image is public.\n"
                },
                "rootVolumeId": {
                    "type": "string",
                    "description": "The ID of the snapshot of the volume to be used as root in the image.\n"
                },
                "rootVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ImageRootVolume:ImageRootVolume"
                    },
                    "description": "The description of the root volume attached to the image.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the image. Possible values are: \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone in which the image should be created.\n"
                }
            },
            "required": [
                "additionalVolumes",
                "creationDate",
                "fromServerId",
                "modificationDate",
                "name",
                "organizationId",
                "projectId",
                "rootVolumes",
                "rootVolumeId",
                "state"
            ],
            "inputProperties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                },
                "architecture": {
                    "type": "string",
                    "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the image is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "public": {
                    "type": "boolean",
                    "description": "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 if the image is public.\n"
                },
                "rootVolumeId": {
                    "type": "string",
                    "description": "The ID of the snapshot of the volume to be used as root in the image.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the image.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone in which the image should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "rootVolumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Image resources.\n",
                "properties": {
                    "additionalVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IDs of the snapshots of the additional volumes to be attached to the image.\n"
                    },
                    "additionalVolumes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ImageAdditionalVolume:ImageAdditionalVolume"
                        },
                        "description": "The description of the extra volumes attached to the image.\n"
                    },
                    "architecture": {
                        "type": "string",
                        "description": "The architecture the image is compatible with. Possible values are: \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x8664`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`arm`\" pulumi-lang-dotnet=\"`Arm`\" pulumi-lang-go=\"`arm`\" pulumi-lang-python=\"`arm`\" pulumi-lang-yaml=\"`arm`\" pulumi-lang-java=\"`arm`\"\u003e`arm`\u003c/span\u003e.\n"
                    },
                    "creationDate": {
                        "type": "string",
                        "description": "Date of the image creation.\n"
                    },
                    "fromServerId": {
                        "type": "string",
                        "description": "ID of the server the image is based on (in case it is a backup).\n"
                    },
                    "modificationDate": {
                        "type": "string",
                        "description": "Date of image latest update.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the image. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the image is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project the image is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "public": {
                        "type": "boolean",
                        "description": "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 if the image is public.\n"
                    },
                    "rootVolumeId": {
                        "type": "string",
                        "description": "The ID of the snapshot of the volume to be used as root in the image.\n",
                        "willReplaceOnChanges": true
                    },
                    "rootVolumes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ImageRootVolume:ImageRootVolume"
                        },
                        "description": "The description of the root volume attached to the image.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "State of the image. Possible values are: \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the image.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone in which the image should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceImage:InstanceImage"
                }
            ]
        },
        "scaleway:instance/ip:Ip": {
            "description": "Creates and manages Scaleway compute Instance IPs. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-ips-list-all-flexible-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverIp = new scaleway.instance.Ip(\"server_ip\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_ip = scaleway.instance.Ip(\"server_ip\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverIp = new Scaleway.Instance.Ip(\"server_ip\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewIp(ctx, \"server_ip\", 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.scaleway.instance.Ip;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverIp = new Ip(\"serverIp\");\n\n    }\n}\n```\n```yaml\nresources:\n  serverIp:\n    type: scaleway:instance:Ip\n    name: server_ip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPs can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/ip:Ip server_ip fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP address.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the IP is associated with.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The IP Prefix.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse dns attached to this IP\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The server associated with this IP"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "address",
                "organizationId",
                "prefix",
                "projectId",
                "reverse",
                "serverId",
                "type"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the IP.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Ip resources.\n",
                "properties": {
                    "address": {
                        "type": "string",
                        "description": "The IP address.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the IP is associated with.\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "The IP Prefix.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the IP is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse dns attached to this IP\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The server associated with this IP"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the IP.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the IP (\u003cspan pulumi-lang-nodejs=\"`routedIpv4`\" pulumi-lang-dotnet=\"`RoutedIpv4`\" pulumi-lang-go=\"`routedIpv4`\" pulumi-lang-python=\"`routed_ipv4`\" pulumi-lang-yaml=\"`routedIpv4`\" pulumi-lang-java=\"`routedIpv4`\"\u003e`routedIpv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`routedIpv6`\" pulumi-lang-dotnet=\"`RoutedIpv6`\" pulumi-lang-go=\"`routedIpv6`\" pulumi-lang-python=\"`routed_ipv6`\" pulumi-lang-yaml=\"`routedIpv6`\" pulumi-lang-java=\"`routedIpv6`\"\u003e`routedIpv6`\u003c/span\u003e), more information in [the documentation](https://www.scaleway.com/en/docs/compute/instances/api-cli/using-routed-ips/)\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceIp:InstanceIp"
                }
            ]
        },
        "scaleway:instance/ipReverseDns:IpReverseDns": {
            "description": "Manages Scaleway compute Instance IPs Reverse DNS.\n\nPlease check our [guide](https://www.scaleway.com/en/docs/compute/instances/how-to/configure-reverse-dns/) for more details\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverIp = new scaleway.instance.Ip(\"server_ip\", {});\nconst tfA = new scaleway.domain.Record(\"tf_A\", {\n    dnsZone: \"scaleway.com\",\n    name: \"www\",\n    type: \"A\",\n    data: serverIp.address,\n    ttl: 3600,\n    priority: 1,\n});\nconst reverse = new scaleway.instance.IpReverseDns(\"reverse\", {\n    ipId: serverIp.id,\n    reverse: \"www.scaleway.com\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_ip = scaleway.instance.Ip(\"server_ip\")\ntf_a = scaleway.domain.Record(\"tf_A\",\n    dns_zone=\"scaleway.com\",\n    name=\"www\",\n    type=\"A\",\n    data=server_ip.address,\n    ttl=3600,\n    priority=1)\nreverse = scaleway.instance.IpReverseDns(\"reverse\",\n    ip_id=server_ip.id,\n    reverse=\"www.scaleway.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverIp = new Scaleway.Instance.Ip(\"server_ip\");\n\n    var tfA = new Scaleway.Domain.Record(\"tf_A\", new()\n    {\n        DnsZone = \"scaleway.com\",\n        Name = \"www\",\n        Type = \"A\",\n        Data = serverIp.Address,\n        Ttl = 3600,\n        Priority = 1,\n    });\n\n    var reverse = new Scaleway.Instance.IpReverseDns(\"reverse\", new()\n    {\n        IpId = serverIp.Id,\n        Reverse = \"www.scaleway.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/domain\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tserverIp, err := instance.NewIp(ctx, \"server_ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = domain.NewRecord(ctx, \"tf_A\", \u0026domain.RecordArgs{\n\t\t\tDnsZone:  pulumi.String(\"scaleway.com\"),\n\t\t\tName:     pulumi.String(\"www\"),\n\t\t\tType:     pulumi.String(\"A\"),\n\t\t\tData:     serverIp.Address,\n\t\t\tTtl:      pulumi.Int(3600),\n\t\t\tPriority: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewIpReverseDns(ctx, \"reverse\", \u0026instance.IpReverseDnsArgs{\n\t\t\tIpId:    serverIp.ID(),\n\t\t\tReverse: pulumi.String(\"www.scaleway.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.scaleway.instance.Ip;\nimport com.pulumi.scaleway.domain.Record;\nimport com.pulumi.scaleway.domain.RecordArgs;\nimport com.pulumi.scaleway.instance.IpReverseDns;\nimport com.pulumi.scaleway.instance.IpReverseDnsArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverIp = new Ip(\"serverIp\");\n\n        var tfA = new Record(\"tfA\", RecordArgs.builder()\n            .dnsZone(\"scaleway.com\")\n            .name(\"www\")\n            .type(\"A\")\n            .data(serverIp.address())\n            .ttl(3600)\n            .priority(1)\n            .build());\n\n        var reverse = new IpReverseDns(\"reverse\", IpReverseDnsArgs.builder()\n            .ipId(serverIp.id())\n            .reverse(\"www.scaleway.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  serverIp:\n    type: scaleway:instance:Ip\n    name: server_ip\n  tfA:\n    type: scaleway:domain:Record\n    name: tf_A\n    properties:\n      dnsZone: scaleway.com\n      name: www\n      type: A\n      data: ${serverIp.address}\n      ttl: 3600\n      priority: 1\n  reverse:\n    type: scaleway:instance:IpReverseDns\n    properties:\n      ipId: ${serverIp.id}\n      reverse: www.scaleway.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIPs reverse DNS can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/ipReverseDns:IpReverseDns reverse fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "ipId": {
                    "type": "string",
                    "description": "The IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse DNS for this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n"
                }
            },
            "required": [
                "ipId",
                "reverse"
            ],
            "inputProperties": {
                "ipId": {
                    "type": "string",
                    "description": "The IP ID\n"
                },
                "reverse": {
                    "type": "string",
                    "description": "The reverse DNS for this IP.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "ipId",
                "reverse"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering IpReverseDns resources.\n",
                "properties": {
                    "ipId": {
                        "type": "string",
                        "description": "The IP ID\n"
                    },
                    "reverse": {
                        "type": "string",
                        "description": "The reverse DNS for this IP.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the IP should be reserved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceIpReverseDns:InstanceIpReverseDns"
                }
            ]
        },
        "scaleway:instance/placementGroup:PlacementGroup": {
            "description": "Creates and manages Compute Instance Placement Groups. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-list-placement-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst availabilityGroup = new scaleway.instance.PlacementGroup(\"availability_group\", {});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\navailability_group = scaleway.instance.PlacementGroup(\"availability_group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availabilityGroup = new Scaleway.Instance.PlacementGroup(\"availability_group\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewPlacementGroup(ctx, \"availability_group\", 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.scaleway.instance.PlacementGroup;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 availabilityGroup = new PlacementGroup(\"availabilityGroup\");\n\n    }\n}\n```\n```yaml\nresources:\n  availabilityGroup:\n    type: scaleway:instance:PlacementGroup\n    name: availability_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlacement groups can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/placementGroup:PlacementGroup availability_group fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the placement group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the placement group is associated with.\n"
                },
                "policyMode": {
                    "type": "string",
                    "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                },
                "policyRespected": {
                    "type": "boolean",
                    "description": "Is true when the policy is respected.\n"
                },
                "policyType": {
                    "type": "string",
                    "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the placement group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "policyRespected",
                "projectId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the placement group.\n"
                },
                "policyMode": {
                    "type": "string",
                    "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                },
                "policyType": {
                    "type": "string",
                    "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the placement group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PlacementGroup resources.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the placement group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the placement group is associated with.\n"
                    },
                    "policyMode": {
                        "type": "string",
                        "description": "The [policy mode](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-group) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`optional`\" pulumi-lang-dotnet=\"`Optional`\" pulumi-lang-go=\"`optional`\" pulumi-lang-python=\"`optional`\" pulumi-lang-yaml=\"`optional`\" pulumi-lang-java=\"`optional`\"\u003e`optional`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`enforced`\" pulumi-lang-dotnet=\"`Enforced`\" pulumi-lang-go=\"`enforced`\" pulumi-lang-python=\"`enforced`\" pulumi-lang-yaml=\"`enforced`\" pulumi-lang-java=\"`enforced`\"\u003e`enforced`\u003c/span\u003e.\n"
                    },
                    "policyRespected": {
                        "type": "boolean",
                        "description": "Is true when the policy is respected.\n"
                    },
                    "policyType": {
                        "type": "string",
                        "description": "The [policy type](https://www.scaleway.com/en/developers/api/instance/#path-placement-groups-create-a-placement-grou) of the placement group. Possible values are: \u003cspan pulumi-lang-nodejs=\"`lowLatency`\" pulumi-lang-dotnet=\"`LowLatency`\" pulumi-lang-go=\"`lowLatency`\" pulumi-lang-python=\"`low_latency`\" pulumi-lang-yaml=\"`lowLatency`\" pulumi-lang-java=\"`lowLatency`\"\u003e`lowLatency`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`maxAvailability`\" pulumi-lang-dotnet=\"`MaxAvailability`\" pulumi-lang-go=\"`maxAvailability`\" pulumi-lang-python=\"`max_availability`\" pulumi-lang-yaml=\"`maxAvailability`\" pulumi-lang-java=\"`maxAvailability`\"\u003e`maxAvailability`\u003c/span\u003e.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the placement group is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the placement group.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the placement group should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instancePlacementGroup:InstancePlacementGroup"
                }
            ]
        },
        "scaleway:instance/privateNic:PrivateNic": {
            "description": "Creates and manages Scaleway Instance Private NICs. For more information, see\nthe [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    serverId: \"fr-par-1/11111111-1111-1111-1111-111111111111\",\n    privateNetworkId: \"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    server_id=\"fr-par-1/11111111-1111-1111-1111-111111111111\",\n    private_network_id=\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        ServerId = \"fr-par-1/11111111-1111-1111-1111-111111111111\",\n        PrivateNetworkId = \"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tServerId:         pulumi.String(\"fr-par-1/11111111-1111-1111-1111-111111111111\"),\n\t\t\tPrivateNetworkId: pulumi.String(\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\"),\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.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .serverId(\"fr-par-1/11111111-1111-1111-1111-111111111111\")\n            .privateNetworkId(\"fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      serverId: fr-par-1/11111111-1111-1111-1111-111111111111\n      privateNetworkId: fr-par-1/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With zone\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"private_network_instance\",\n    region: \"fr-par\",\n});\nconst base = new scaleway.instance.Server(\"base\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    zone: pn01.zone,\n});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    serverId: base.id,\n    privateNetworkId: pn01.id,\n    zone: pn01.zone,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"private_network_instance\",\n    region=\"fr-par\")\nbase = scaleway.instance.Server(\"base\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    zone=pn01.zone)\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    server_id=base.id,\n    private_network_id=pn01.id,\n    zone=pn01.zone)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n        Region = \"fr-par\",\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        Zone = pn01.Zone,\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        ServerId = @base.Id,\n        PrivateNetworkId = pn01.Id,\n        Zone = pn01.Zone,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName:   pulumi.String(\"private_network_instance\"),\n\t\t\tRegion: pulumi.String(\"fr-par\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbase, err := instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tZone:  pn01.Zone,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tServerId:         base.ID(),\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tZone:             pn01.Zone,\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .region(\"fr-par\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .zone(pn01.zone())\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .serverId(base.id())\n            .privateNetworkId(pn01.id())\n            .zone(pn01.zone())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n      region: fr-par\n  base:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      zone: ${pn01.zone}\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      serverId: ${base.id}\n      privateNetworkId: ${pn01.id}\n      zone: ${pn01.zone}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With IPAM IP IDs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst vpc01 = new scaleway.network.Vpc(\"vpc01\", {name: \"vpc_instance\"});\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {\n    name: \"private_network_instance\",\n    ipv4Subnet: {\n        subnet: \"172.16.64.0/22\",\n    },\n    vpcId: vpc01.id,\n});\nconst ip01 = new scaleway.ipam.Ip(\"ip01\", {\n    address: \"172.16.64.7\",\n    sources: [{\n        privateNetworkId: pn01.id,\n    }],\n});\nconst server01 = new scaleway.instance.Server(\"server01\", {\n    image: \"ubuntu_focal\",\n    type: \"PLAY2-MICRO\",\n});\nconst pnic01 = new scaleway.instance.PrivateNic(\"pnic01\", {\n    privateNetworkId: pn01.id,\n    serverId: server01.id,\n    ipamIpIds: [ip01.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvpc01 = scaleway.network.Vpc(\"vpc01\", name=\"vpc_instance\")\npn01 = scaleway.network.PrivateNetwork(\"pn01\",\n    name=\"private_network_instance\",\n    ipv4_subnet={\n        \"subnet\": \"172.16.64.0/22\",\n    },\n    vpc_id=vpc01.id)\nip01 = scaleway.ipam.Ip(\"ip01\",\n    address=\"172.16.64.7\",\n    sources=[{\n        \"private_network_id\": pn01.id,\n    }])\nserver01 = scaleway.instance.Server(\"server01\",\n    image=\"ubuntu_focal\",\n    type=\"PLAY2-MICRO\")\npnic01 = scaleway.instance.PrivateNic(\"pnic01\",\n    private_network_id=pn01.id,\n    server_id=server01.id,\n    ipam_ip_ids=[ip01.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc01 = new Scaleway.Network.Vpc(\"vpc01\", new()\n    {\n        Name = \"vpc_instance\",\n    });\n\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n        Ipv4Subnet = new Scaleway.Network.Inputs.PrivateNetworkIpv4SubnetArgs\n        {\n            Subnet = \"172.16.64.0/22\",\n        },\n        VpcId = vpc01.Id,\n    });\n\n    var ip01 = new Scaleway.Ipam.Ip(\"ip01\", new()\n    {\n        Address = \"172.16.64.7\",\n        Sources = new[]\n        {\n            new Scaleway.Ipam.Inputs.IpSourceArgs\n            {\n                PrivateNetworkId = pn01.Id,\n            },\n        },\n    });\n\n    var server01 = new Scaleway.Instance.Server(\"server01\", new()\n    {\n        Image = \"ubuntu_focal\",\n        Type = \"PLAY2-MICRO\",\n    });\n\n    var pnic01 = new Scaleway.Instance.PrivateNic(\"pnic01\", new()\n    {\n        PrivateNetworkId = pn01.Id,\n        ServerId = server01.Id,\n        IpamIpIds = new[]\n        {\n            ip01.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/ipam\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc01, err := network.NewVpc(ctx, \"vpc01\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"vpc_instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"private_network_instance\"),\n\t\t\tIpv4Subnet: \u0026network.PrivateNetworkIpv4SubnetArgs{\n\t\t\t\tSubnet: pulumi.String(\"172.16.64.0/22\"),\n\t\t\t},\n\t\t\tVpcId: vpc01.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip01, err := ipam.NewIp(ctx, \"ip01\", \u0026ipam.IpArgs{\n\t\t\tAddress: pulumi.String(\"172.16.64.7\"),\n\t\t\tSources: ipam.IpSourceArray{\n\t\t\t\t\u0026ipam.IpSourceArgs{\n\t\t\t\t\tPrivateNetworkId: pn01.ID(),\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\tserver01, err := instance.NewServer(ctx, \"server01\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_focal\"),\n\t\t\tType:  pulumi.String(\"PLAY2-MICRO\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewPrivateNic(ctx, \"pnic01\", \u0026instance.PrivateNicArgs{\n\t\t\tPrivateNetworkId: pn01.ID(),\n\t\t\tServerId:         server01.ID(),\n\t\t\tIpamIpIds: pulumi.StringArray{\n\t\t\t\tip01.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.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.network.inputs.PrivateNetworkIpv4SubnetArgs;\nimport com.pulumi.scaleway.ipam.Ip;\nimport com.pulumi.scaleway.ipam.IpArgs;\nimport com.pulumi.scaleway.ipam.inputs.IpSourceArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.PrivateNic;\nimport com.pulumi.scaleway.instance.PrivateNicArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vpc01 = new Vpc(\"vpc01\", VpcArgs.builder()\n            .name(\"vpc_instance\")\n            .build());\n\n        var pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .ipv4Subnet(PrivateNetworkIpv4SubnetArgs.builder()\n                .subnet(\"172.16.64.0/22\")\n                .build())\n            .vpcId(vpc01.id())\n            .build());\n\n        var ip01 = new Ip(\"ip01\", IpArgs.builder()\n            .address(\"172.16.64.7\")\n            .sources(IpSourceArgs.builder()\n                .privateNetworkId(pn01.id())\n                .build())\n            .build());\n\n        var server01 = new Server(\"server01\", ServerArgs.builder()\n            .image(\"ubuntu_focal\")\n            .type(\"PLAY2-MICRO\")\n            .build());\n\n        var pnic01 = new PrivateNic(\"pnic01\", PrivateNicArgs.builder()\n            .privateNetworkId(pn01.id())\n            .serverId(server01.id())\n            .ipamIpIds(ip01.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc01:\n    type: scaleway:network:Vpc\n    properties:\n      name: vpc_instance\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n      ipv4Subnet:\n        subnet: 172.16.64.0/22\n      vpcId: ${vpc01.id}\n  ip01:\n    type: scaleway:ipam:Ip\n    properties:\n      address: 172.16.64.7\n      sources:\n        - privateNetworkId: ${pn01.id}\n  server01:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_focal\n      type: PLAY2-MICRO\n  pnic01:\n    type: scaleway:instance:PrivateNic\n    properties:\n      privateNetworkId: ${pn01.id}\n      serverId: ${server01.id}\n      ipamIpIds:\n        - ${ip01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivate NICs can be imported using the `{zone}/{server_id}/{private_nic_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/privateNic:PrivateNic pnic01 fr-par-1/11111111-1111-1111-1111-111111111111/22222222-2222-2222-2222-222222222222\n```\n\n",
            "properties": {
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ip list, should be for internal use only"
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "The MAC address of the private NIC.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/PrivateNicPrivateIp:PrivateNicPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network attached to.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the private NIC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n"
                }
            },
            "required": [
                "macAddress",
                "privateIps",
                "privateNetworkId",
                "serverId"
            ],
            "inputProperties": {
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM ip list, should be for internal use only",
                    "willReplaceOnChanges": true
                },
                "ipamIpIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n",
                    "willReplaceOnChanges": true
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/PrivateNicPrivateIp:PrivateNicPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworkId": {
                    "type": "string",
                    "description": "The ID of the private network attached to.\n",
                    "willReplaceOnChanges": true
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the private NIC.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "privateNetworkId",
                "serverId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PrivateNic resources.\n",
                "properties": {
                    "ipIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "IPAM ip list, should be for internal use only",
                        "willReplaceOnChanges": true
                    },
                    "ipamIpIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "IPAM IDs of a pre-reserved IP addresses to assign to the Instance in the requested private network.\n",
                        "willReplaceOnChanges": true
                    },
                    "macAddress": {
                        "type": "string",
                        "description": "The MAC address of the private NIC.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/PrivateNicPrivateIp:PrivateNicPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworkId": {
                        "type": "string",
                        "description": "The ID of the private network attached to.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the private NIC.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instancePrivateNic:InstancePrivateNic"
                }
            ]
        },
        "scaleway:instance/securityGroup:SecurityGroup": {
            "description": "Creates and manages Scaleway compute Instance security groups. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-list-security-groups).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst allowAll = new scaleway.instance.SecurityGroup(\"allow_all\", {});\nconst web = new scaleway.instance.SecurityGroup(\"web\", {\n    inboundDefaultPolicy: \"drop\",\n    inboundRules: [\n        {\n            action: \"accept\",\n            port: 22,\n            ipRange: \"212.47.225.64/32\",\n        },\n        {\n            action: \"accept\",\n            port: 80,\n        },\n        {\n            action: \"accept\",\n            protocol: \"UDP\",\n            portRange: \"22-23\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nallow_all = scaleway.instance.SecurityGroup(\"allow_all\")\nweb = scaleway.instance.SecurityGroup(\"web\",\n    inbound_default_policy=\"drop\",\n    inbound_rules=[\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip_range\": \"212.47.225.64/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 80,\n        },\n        {\n            \"action\": \"accept\",\n            \"protocol\": \"UDP\",\n            \"port_range\": \"22-23\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var allowAll = new Scaleway.Instance.SecurityGroup(\"allow_all\");\n\n    var web = new Scaleway.Instance.SecurityGroup(\"web\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = \"212.47.225.64/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Protocol = \"UDP\",\n                PortRange = \"22-23\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSecurityGroup(ctx, \"allow_all\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSecurityGroup(ctx, \"web\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(22),\n\t\t\t\t\tIpRange: pulumi.String(\"212.47.225.64/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:    pulumi.String(\"accept\"),\n\t\t\t\t\tProtocol:  pulumi.String(\"UDP\"),\n\t\t\t\t\tPortRange: pulumi.String(\"22-23\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 allowAll = new SecurityGroup(\"allowAll\");\n\n        var web = new SecurityGroup(\"web\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ipRange(\"212.47.225.64/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(80)\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .protocol(\"UDP\")\n                    .portRange(\"22-23\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  allowAll:\n    type: scaleway:instance:SecurityGroup\n    name: allow_all\n  web:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      inboundRules:\n        - action: accept\n          port: 22\n          ipRange: 212.47.225.64/32\n        - action: accept\n          port: 80\n        - action: accept\n          protocol: UDP\n          portRange: 22-23\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Web server with banned IP and restricted internet access\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst web = new scaleway.instance.SecurityGroup(\"web\", {\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"drop\",\n    inboundRules: [\n        {\n            action: \"drop\",\n            ipRange: \"1.1.1.1/32\",\n        },\n        {\n            action: \"accept\",\n            port: 22,\n            ipRange: \"212.47.225.64/32\",\n        },\n        {\n            action: \"accept\",\n            port: 443,\n        },\n    ],\n    outboundRules: [{\n        action: \"accept\",\n        ipRange: \"8.8.8.8/32\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nweb = scaleway.instance.SecurityGroup(\"web\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"drop\",\n    inbound_rules=[\n        {\n            \"action\": \"drop\",\n            \"ip_range\": \"1.1.1.1/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip_range\": \"212.47.225.64/32\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 443,\n        },\n    ],\n    outbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": \"8.8.8.8/32\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new Scaleway.Instance.SecurityGroup(\"web\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"drop\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"drop\",\n                IpRange = \"1.1.1.1/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = \"212.47.225.64/32\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 443,\n            },\n        },\n        OutboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupOutboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = \"8.8.8.8/32\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSecurityGroup(ctx, \"web\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy:  pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"drop\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"1.1.1.1/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(22),\n\t\t\t\t\tIpRange: pulumi.String(\"212.47.225.64/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: instance.SecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tIpRange: pulumi.String(\"8.8.8.8/32\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupOutboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 web = new SecurityGroup(\"web\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .outboundDefaultPolicy(\"drop\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"drop\")\n                    .ipRange(\"1.1.1.1/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ipRange(\"212.47.225.64/32\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(443)\n                    .build())\n            .outboundRules(SecurityGroupOutboundRuleArgs.builder()\n                .action(\"accept\")\n                .ipRange(\"8.8.8.8/32\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      outboundDefaultPolicy: drop\n      inboundRules:\n        - action: drop\n          ipRange: 1.1.1.1/32\n        - action: accept\n          port: 22\n          ipRange: 212.47.225.64/32\n        - action: accept\n          port: 443\n      outboundRules:\n        - action: accept\n          ipRange: 8.8.8.8/32\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Trusted IP for SSH access (using for_each)\n\nIf you use terraform \u003e= 0.12.6, you can leverage the \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e feature with this resource.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst trusted = [\n    \"192.168.0.1\",\n    \"192.168.0.2\",\n    \"192.168.0.3\",\n];\nconst dummy = new scaleway.instance.SecurityGroup(\"dummy\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        port: 22,\n        ipRange: entry,\n    })),\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ntrusted = [\n    \"192.168.0.1\",\n    \"192.168.0.2\",\n    \"192.168.0.3\",\n]\ndummy = scaleway.instance.SecurityGroup(\"dummy\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"port\": 22,\n        \"ip_range\": entry,\n    } for entry in trusted],\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var trusted = new[]\n    {\n        \"192.168.0.1\",\n        \"192.168.0.2\",\n        \"192.168.0.3\",\n    };\n\n    var dummy = new Scaleway.Instance.SecurityGroup(\"dummy\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                IpRange = entry,\n            };\n        }).ToList(),\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance security group can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/securityGroup:SecurityGroup web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the security group.\n"
                },
                "enableDefaultSecurity": {
                    "type": "boolean",
                    "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                },
                "externalRules": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                },
                "inboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupInboundRule:SecurityGroupInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the security group.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the security group is associated with.\n"
                },
                "outboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupOutboundRule:SecurityGroupOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n"
                },
                "stateful": {
                    "type": "boolean",
                    "description": "A boolean to specify whether the security group should be stateful or not.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags of the security group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "The description of the security group.\n"
                },
                "enableDefaultSecurity": {
                    "type": "boolean",
                    "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                },
                "externalRules": {
                    "type": "boolean",
                    "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                },
                "inboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupInboundRule:SecurityGroupInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the security group.\n"
                },
                "outboundDefaultPolicy": {
                    "type": "string",
                    "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupOutboundRule:SecurityGroupOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "stateful": {
                    "type": "boolean",
                    "description": "A boolean to specify whether the security group should be stateful or not.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags of the security group.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SecurityGroup resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "The description of the security group.\n"
                    },
                    "enableDefaultSecurity": {
                        "type": "boolean",
                        "description": "Whether to block SMTP on IPv4/IPv6 (Port 25, 465, 587). Set to false will unblock SMTP if your account is authorized to. If your organization is not yet authorized to send SMTP traffic, [open a support ticket](https://console.scaleway.com/support/tickets).\n"
                    },
                    "externalRules": {
                        "type": "boolean",
                        "description": "A boolean to specify whether to use instance_security_group_rules.\nIf \u003cspan pulumi-lang-nodejs=\"`externalRules`\" pulumi-lang-dotnet=\"`ExternalRules`\" pulumi-lang-go=\"`externalRules`\" pulumi-lang-python=\"`external_rules`\" pulumi-lang-yaml=\"`externalRules`\" pulumi-lang-java=\"`externalRules`\"\u003e`externalRules`\u003c/span\u003e is 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, \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inboundRule`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outboundRule`\u003c/span\u003e can not be set directly in the security group.\n"
                    },
                    "inboundDefaultPolicy": {
                        "type": "string",
                        "description": "The default policy on incoming traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                    },
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/SecurityGroupInboundRule:SecurityGroupInboundRule"
                        },
                        "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the security group.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the security group is associated with.\n"
                    },
                    "outboundDefaultPolicy": {
                        "type": "string",
                        "description": "The default policy on outgoing traffic. Possible values are: \u003cspan pulumi-lang-nodejs=\"`accept`\" pulumi-lang-dotnet=\"`Accept`\" pulumi-lang-go=\"`accept`\" pulumi-lang-python=\"`accept`\" pulumi-lang-yaml=\"`accept`\" pulumi-lang-java=\"`accept`\"\u003e`accept`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`drop`\" pulumi-lang-dotnet=\"`Drop`\" pulumi-lang-go=\"`drop`\" pulumi-lang-python=\"`drop`\" pulumi-lang-yaml=\"`drop`\" pulumi-lang-java=\"`drop`\"\u003e`drop`\u003c/span\u003e.\n"
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/SecurityGroupOutboundRule:SecurityGroupOutboundRule"
                        },
                        "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the security group is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "stateful": {
                        "type": "boolean",
                        "description": "A boolean to specify whether the security group should be stateful or not.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags of the security group.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the security group should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceSecurityGroup:InstanceSecurityGroup"
                }
            ]
        },
        "scaleway:instance/securityGroupRules:SecurityGroupRules": {
            "description": "Creates and manages Scaleway compute Instance security group rules. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-list-security-groups).\n\nThis resource can be used to externalize rules from a \u003cspan pulumi-lang-nodejs=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-dotnet=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-go=\"`instance.SecurityGroup`\" pulumi-lang-python=\"`instance.SecurityGroup`\" pulumi-lang-yaml=\"`scaleway.instance.SecurityGroup`\" pulumi-lang-java=\"`scaleway.instance.SecurityGroup`\"\u003e`scaleway.instance.SecurityGroup`\u003c/span\u003e to solve circular dependency problems. When using this resource do not forget to set \u003cspan pulumi-lang-nodejs=\"`externalRules \" pulumi-lang-dotnet=\"`ExternalRules \" pulumi-lang-go=\"`externalRules \" pulumi-lang-python=\"`external_rules \" pulumi-lang-yaml=\"`externalRules \" pulumi-lang-java=\"`externalRules \"\u003e`externalRules \u003c/span\u003e= true` on the security group.\n\n\u003e **Warning:** In order to guaranty rules order in a given security group only one\u003cspan pulumi-lang-nodejs=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-dotnet=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-go=\" instance.SecurityGroupRules \" pulumi-lang-python=\" instance.SecurityGroupRules \" pulumi-lang-yaml=\" scaleway.instance.SecurityGroupRules \" pulumi-lang-java=\" scaleway.instance.SecurityGroupRules \"\u003e scaleway.instance.SecurityGroupRules \u003c/span\u003eis allowed per security group.\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst sg01 = new scaleway.instance.SecurityGroup(\"sg01\", {externalRules: true});\nconst sgrs01 = new scaleway.instance.SecurityGroupRules(\"sgrs01\", {\n    securityGroupId: sg01.id,\n    inboundRules: [{\n        action: \"accept\",\n        port: 80,\n        ipRange: \"0.0.0.0/0\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nsg01 = scaleway.instance.SecurityGroup(\"sg01\", external_rules=True)\nsgrs01 = scaleway.instance.SecurityGroupRules(\"sgrs01\",\n    security_group_id=sg01.id,\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"port\": 80,\n        \"ip_range\": \"0.0.0.0/0\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sg01 = new Scaleway.Instance.SecurityGroup(\"sg01\", new()\n    {\n        ExternalRules = true,\n    });\n\n    var sgrs01 = new Scaleway.Instance.SecurityGroupRules(\"sgrs01\", new()\n    {\n        SecurityGroupId = sg01.Id,\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n                IpRange = \"0.0.0.0/0\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsg01, err := instance.NewSecurityGroup(ctx, \"sg01\", \u0026instance.SecurityGroupArgs{\n\t\t\tExternalRules: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSecurityGroupRules(ctx, \"sgrs01\", \u0026instance.SecurityGroupRulesArgs{\n\t\t\tSecurityGroupId: sg01.ID(),\n\t\t\tInboundRules: instance.SecurityGroupRulesInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupRulesInboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"accept\"),\n\t\t\t\t\tPort:    pulumi.Int(80),\n\t\t\t\t\tIpRange: pulumi.String(\"0.0.0.0/0\"),\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.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.SecurityGroupRules;\nimport com.pulumi.scaleway.instance.SecurityGroupRulesArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupRulesInboundRuleArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 sg01 = new SecurityGroup(\"sg01\", SecurityGroupArgs.builder()\n            .externalRules(true)\n            .build());\n\n        var sgrs01 = new SecurityGroupRules(\"sgrs01\", SecurityGroupRulesArgs.builder()\n            .securityGroupId(sg01.id())\n            .inboundRules(SecurityGroupRulesInboundRuleArgs.builder()\n                .action(\"accept\")\n                .port(80)\n                .ipRange(\"0.0.0.0/0\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sg01:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      externalRules: true\n  sgrs01:\n    type: scaleway:instance:SecurityGroupRules\n    properties:\n      securityGroupId: ${sg01.id}\n      inboundRules:\n        - action: accept\n          port: 80\n          ipRange: 0.0.0.0/0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Simplify your rules using dynamic block and \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e loop\n\nYou can use \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e syntax to simplify the definition of your rules.\nLet's suppose that your inbound default policy is to drop, but you want to build a list of exceptions to accept.\nCreate a local containing your exceptions (`locals.trusted`) and use the \u003cspan pulumi-lang-nodejs=\"`forEach`\" pulumi-lang-dotnet=\"`ForEach`\" pulumi-lang-go=\"`forEach`\" pulumi-lang-python=\"`for_each`\" pulumi-lang-yaml=\"`forEach`\" pulumi-lang-java=\"`forEach`\"\u003e`forEach`\u003c/span\u003e syntax in a dynamic block:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.SecurityGroup(\"main\", {\n    description: \"test\",\n    name: \"terraform test\",\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\nconst trusted = [\n    \"1.2.3.4/32\",\n    \"4.5.6.7/32\",\n    \"7.8.9.10/24\",\n];\nconst mainSecurityGroupRules = new scaleway.instance.SecurityGroupRules(\"main\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        ipRange: entry,\n        port: 80,\n    })),\n    securityGroupId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.SecurityGroup(\"main\",\n    description=\"test\",\n    name=\"terraform test\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\ntrusted = [\n    \"1.2.3.4/32\",\n    \"4.5.6.7/32\",\n    \"7.8.9.10/24\",\n]\nmain_security_group_rules = scaleway.instance.SecurityGroupRules(\"main\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": entry,\n        \"port\": 80,\n    } for entry in trusted],\n    security_group_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.SecurityGroup(\"main\", new()\n    {\n        Description = \"test\",\n        Name = \"terraform test\",\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n    var trusted = new[]\n    {\n        \"1.2.3.4/32\",\n        \"4.5.6.7/32\",\n        \"7.8.9.10/24\",\n    };\n\n    var mainSecurityGroupRules = new Scaleway.Instance.SecurityGroupRules(\"main\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = entry,\n                Port = 80,\n            };\n        }).ToList(),\n        SecurityGroupId = main.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also use object to assign IP and port in the same time.\nIn your locals, you can use objects to encapsulate several values that will be used later on in the loop:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.SecurityGroup(\"main\", {\n    description: \"test\",\n    name: \"terraform test\",\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n});\nconst trusted = [\n    {\n        ipRange: \"1.2.3.4/32\",\n        port: \"80\",\n    },\n    {\n        ipRange: \"5.6.7.8/32\",\n        port: \"81\",\n    },\n    {\n        ipRange: \"9.10.11.12/32\",\n        port: \"81\",\n    },\n];\nconst mainSecurityGroupRules = new scaleway.instance.SecurityGroupRules(\"main\", {\n    inboundRules: trusted.map(entry =\u003e ({\n        action: \"accept\",\n        ipRange: entry.ipRange,\n        port: Number(entry.port),\n    })),\n    securityGroupId: main.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.SecurityGroup(\"main\",\n    description=\"test\",\n    name=\"terraform test\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\")\ntrusted = [\n    {\n        \"ipRange\": \"1.2.3.4/32\",\n        \"port\": \"80\",\n    },\n    {\n        \"ipRange\": \"5.6.7.8/32\",\n        \"port\": \"81\",\n    },\n    {\n        \"ipRange\": \"9.10.11.12/32\",\n        \"port\": \"81\",\n    },\n]\nmain_security_group_rules = scaleway.instance.SecurityGroupRules(\"main\",\n    inbound_rules=[{\n        \"action\": \"accept\",\n        \"ip_range\": entry[\"ipRange\"],\n        \"port\": int(entry[\"port\"]),\n    } for entry in trusted],\n    security_group_id=main.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.SecurityGroup(\"main\", new()\n    {\n        Description = \"test\",\n        Name = \"terraform test\",\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n    });\n\n    var trusted = new[]\n    {\n        \n        {\n            { \"ipRange\", \"1.2.3.4/32\" },\n            { \"port\", \"80\" },\n        },\n        \n        {\n            { \"ipRange\", \"5.6.7.8/32\" },\n            { \"port\", \"81\" },\n        },\n        \n        {\n            { \"ipRange\", \"9.10.11.12/32\" },\n            { \"port\", \"81\" },\n        },\n    };\n\n    var mainSecurityGroupRules = new Scaleway.Instance.SecurityGroupRules(\"main\", new()\n    {\n        InboundRules = trusted.Select(entry =\u003e \n        {\n            return new Scaleway.Instance.Inputs.SecurityGroupRulesInboundRuleArgs\n            {\n                Action = \"accept\",\n                IpRange = entry.IpRange,\n                Port = entry.Port,\n            };\n        }).ToList(),\n        SecurityGroupId = main.Id,\n    });\n\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance security group rules can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/securityGroupRules:SecurityGroupRules web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupRulesInboundRule:SecurityGroupRulesInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupRulesOutboundRule:SecurityGroupRulesOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group.\n"
                }
            },
            "required": [
                "securityGroupId"
            ],
            "inputProperties": {
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupRulesInboundRule:SecurityGroupRulesInboundRule"
                    },
                    "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/SecurityGroupRulesOutboundRule:SecurityGroupRulesOutboundRule"
                    },
                    "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The ID of the security group.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "securityGroupId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SecurityGroupRules resources.\n",
                "properties": {
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/SecurityGroupRulesInboundRule:SecurityGroupRulesInboundRule"
                        },
                        "description": "A list of inbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/SecurityGroupRulesOutboundRule:SecurityGroupRulesOutboundRule"
                        },
                        "description": "A list of outbound rule to add to the security group. (Structure is documented below.)\n"
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The ID of the security group.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceSecurityGroupRules:InstanceSecurityGroupRules"
                }
            ]
        },
        "scaleway:instance/server:Server": {
            "description": "Creates and manages Scaleway compute Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-instances-list-all-instances).\n\nPlease check our [FAQ - Instances](https://www.scaleway.com/en/docs/faq/instances).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst publicIp = new scaleway.instance.Ip(\"public_ip\", {});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    ipId: publicIp.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npublic_ip = scaleway.instance.Ip(\"public_ip\")\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    ip_id=public_ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var publicIp = new Scaleway.Instance.Ip(\"public_ip\");\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        IpId = publicIp.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublicIp, err := instance.NewIp(ctx, \"public_ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tIpId:  publicIp.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.pulumi.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 publicIp = new Ip(\"publicIp\");\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .ipId(publicIp.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  publicIp:\n    type: scaleway:instance:Ip\n    name: public_ip\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      ipId: ${publicIp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With additional volumes and tags\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst data = new scaleway.block.Volume(\"data\", {\n    sizeInGb: 100,\n    iops: 5000,\n});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    tags: [\n        \"hello\",\n        \"public\",\n    ],\n    rootVolume: {\n        deleteOnTermination: false,\n    },\n    additionalVolumeIds: [data.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\ndata = scaleway.block.Volume(\"data\",\n    size_in_gb=100,\n    iops=5000)\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    tags=[\n        \"hello\",\n        \"public\",\n    ],\n    root_volume={\n        \"delete_on_termination\": False,\n    },\n    additional_volume_ids=[data.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var data = new Scaleway.Block.Volume(\"data\", new()\n    {\n        SizeInGb = 100,\n        Iops = 5000,\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        Tags = new[]\n        {\n            \"hello\",\n            \"public\",\n        },\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            DeleteOnTermination = false,\n        },\n        AdditionalVolumeIds = new[]\n        {\n            data.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdata, err := block.NewVolume(ctx, \"data\", \u0026block.VolumeArgs{\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t\tIops:     pulumi.Int(5000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tDeleteOnTermination: pulumi.Bool(false),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tdata.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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 data = new Volume(\"data\", VolumeArgs.builder()\n            .sizeInGb(100)\n            .iops(5000)\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .tags(            \n                \"hello\",\n                \"public\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .deleteOnTermination(false)\n                .build())\n            .additionalVolumeIds(data.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  data:\n    type: scaleway:block:Volume\n    properties:\n      sizeInGb: 100\n      iops: 5000\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      tags:\n        - hello\n        - public\n      rootVolume:\n        deleteOnTermination: false\n      additionalVolumeIds:\n        - ${data.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With filesystem\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst volume = new scaleway.block.Volume(\"volume\", {\n    iops: 15000,\n    sizeInGb: 15,\n});\nconst terraformInstanceFilesystem = new scaleway.FileFilesystem(\"terraform_instance_filesystem\", {\n    name: \"filesystem-instance-terraform\",\n    sizeInGb: 100,\n});\nconst base = new scaleway.instance.Server(\"base\", {\n    type: \"POP2-HM-2C-16G\",\n    state: \"started\",\n    tags: [\n        \"terraform-test\",\n        \"scaleway_instance_server\",\n        \"state\",\n    ],\n    rootVolume: {\n        volumeType: \"sbs_volume\",\n        volumeId: volume.id,\n    },\n    filesystems: [{\n        filesystemId: terraformInstanceFilesystem.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nvolume = scaleway.block.Volume(\"volume\",\n    iops=15000,\n    size_in_gb=15)\nterraform_instance_filesystem = scaleway.FileFilesystem(\"terraform_instance_filesystem\",\n    name=\"filesystem-instance-terraform\",\n    size_in_gb=100)\nbase = scaleway.instance.Server(\"base\",\n    type=\"POP2-HM-2C-16G\",\n    state=\"started\",\n    tags=[\n        \"terraform-test\",\n        \"scaleway_instance_server\",\n        \"state\",\n    ],\n    root_volume={\n        \"volume_type\": \"sbs_volume\",\n        \"volume_id\": volume.id,\n    },\n    filesystems=[{\n        \"filesystem_id\": terraform_instance_filesystem.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume = new Scaleway.Block.Volume(\"volume\", new()\n    {\n        Iops = 15000,\n        SizeInGb = 15,\n    });\n\n    var terraformInstanceFilesystem = new Scaleway.FileFilesystem(\"terraform_instance_filesystem\", new()\n    {\n        Name = \"filesystem-instance-terraform\",\n        SizeInGb = 100,\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Type = \"POP2-HM-2C-16G\",\n        State = \"started\",\n        Tags = new[]\n        {\n            \"terraform-test\",\n            \"scaleway_instance_server\",\n            \"state\",\n        },\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeType = \"sbs_volume\",\n            VolumeId = volume.Id,\n        },\n        Filesystems = new[]\n        {\n            new Scaleway.Instance.Inputs.ServerFilesystemArgs\n            {\n                FilesystemId = terraformInstanceFilesystem.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume, err := block.NewVolume(ctx, \"volume\", \u0026block.VolumeArgs{\n\t\t\tIops:     pulumi.Int(15000),\n\t\t\tSizeInGb: pulumi.Int(15),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tterraformInstanceFilesystem, err := scaleway.NewFileFilesystem(ctx, \"terraform_instance_filesystem\", \u0026scaleway.FileFilesystemArgs{\n\t\t\tName:     pulumi.String(\"filesystem-instance-terraform\"),\n\t\t\tSizeInGb: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"POP2-HM-2C-16G\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform-test\"),\n\t\t\t\tpulumi.String(\"scaleway_instance_server\"),\n\t\t\t\tpulumi.String(\"state\"),\n\t\t\t},\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\n\t\t\t\tVolumeId:   volume.ID(),\n\t\t\t},\n\t\t\tFilesystems: instance.ServerFilesystemArray{\n\t\t\t\t\u0026instance.ServerFilesystemArgs{\n\t\t\t\t\tFilesystemId: terraformInstanceFilesystem.ID(),\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.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.FileFilesystem;\nimport com.pulumi.scaleway.FileFilesystemArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerFilesystemArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume = new Volume(\"volume\", VolumeArgs.builder()\n            .iops(15000)\n            .sizeInGb(15)\n            .build());\n\n        var terraformInstanceFilesystem = new FileFilesystem(\"terraformInstanceFilesystem\", FileFilesystemArgs.builder()\n            .name(\"filesystem-instance-terraform\")\n            .sizeInGb(100)\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .type(\"POP2-HM-2C-16G\")\n            .state(\"started\")\n            .tags(            \n                \"terraform-test\",\n                \"scaleway_instance_server\",\n                \"state\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeType(\"sbs_volume\")\n                .volumeId(volume.id())\n                .build())\n            .filesystems(ServerFilesystemArgs.builder()\n                .filesystemId(terraformInstanceFilesystem.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume:\n    type: scaleway:block:Volume\n    properties:\n      iops: 15000\n      sizeInGb: 15\n  terraformInstanceFilesystem:\n    type: scaleway:FileFilesystem\n    name: terraform_instance_filesystem\n    properties:\n      name: filesystem-instance-terraform\n      sizeInGb: 100\n  base:\n    type: scaleway:instance:Server\n    properties:\n      type: POP2-HM-2C-16G\n      state: started\n      tags:\n        - terraform-test\n        - scaleway_instance_server\n        - state\n      rootVolume:\n        volumeType: sbs_volume\n        volumeId: ${volume.id}\n      filesystems:\n        - filesystemId: ${terraformInstanceFilesystem.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With a reserved IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst ip = new scaleway.instance.Ip(\"ip\", {});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n    tags: [\n        \"hello\",\n        \"public\",\n    ],\n    ipId: ip.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nip = scaleway.instance.Ip(\"ip\")\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"f974feac-abae-4365-b988-8ec7d1cec10d\",\n    tags=[\n        \"hello\",\n        \"public\",\n    ],\n    ip_id=ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ip = new Scaleway.Instance.Ip(\"ip\");\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"f974feac-abae-4365-b988-8ec7d1cec10d\",\n        Tags = new[]\n        {\n            \"hello\",\n            \"public\",\n        },\n        IpId = ip.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tip, err := instance.NewIp(ctx, \"ip\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tImage: pulumi.String(\"f974feac-abae-4365-b988-8ec7d1cec10d\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hello\"),\n\t\t\t\tpulumi.String(\"public\"),\n\t\t\t},\n\t\t\tIpId: ip.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.pulumi.scaleway.instance.Ip;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ip = new Ip(\"ip\");\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"f974feac-abae-4365-b988-8ec7d1cec10d\")\n            .tags(            \n                \"hello\",\n                \"public\")\n            .ipId(ip.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ip:\n    type: scaleway:instance:Ip\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: f974feac-abae-4365-b988-8ec7d1cec10d\n      tags:\n        - hello\n        - public\n      ipId: ${ip.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With security group\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst www = new scaleway.instance.SecurityGroup(\"www\", {\n    inboundDefaultPolicy: \"drop\",\n    outboundDefaultPolicy: \"accept\",\n    inboundRules: [\n        {\n            action: \"accept\",\n            port: 22,\n            ip: \"212.47.225.64\",\n        },\n        {\n            action: \"accept\",\n            port: 80,\n        },\n        {\n            action: \"accept\",\n            port: 443,\n        },\n    ],\n    outboundRules: [{\n        action: \"drop\",\n        ipRange: \"10.20.0.0/24\",\n    }],\n});\nconst web = new scaleway.instance.Server(\"web\", {\n    type: \"DEV1-S\",\n    image: \"ubuntu_jammy\",\n    securityGroupId: www.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nwww = scaleway.instance.SecurityGroup(\"www\",\n    inbound_default_policy=\"drop\",\n    outbound_default_policy=\"accept\",\n    inbound_rules=[\n        {\n            \"action\": \"accept\",\n            \"port\": 22,\n            \"ip\": \"212.47.225.64\",\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 80,\n        },\n        {\n            \"action\": \"accept\",\n            \"port\": 443,\n        },\n    ],\n    outbound_rules=[{\n        \"action\": \"drop\",\n        \"ip_range\": \"10.20.0.0/24\",\n    }])\nweb = scaleway.instance.Server(\"web\",\n    type=\"DEV1-S\",\n    image=\"ubuntu_jammy\",\n    security_group_id=www.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var www = new Scaleway.Instance.SecurityGroup(\"www\", new()\n    {\n        InboundDefaultPolicy = \"drop\",\n        OutboundDefaultPolicy = \"accept\",\n        InboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 22,\n                Ip = \"212.47.225.64\",\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 80,\n            },\n            new Scaleway.Instance.Inputs.SecurityGroupInboundRuleArgs\n            {\n                Action = \"accept\",\n                Port = 443,\n            },\n        },\n        OutboundRules = new[]\n        {\n            new Scaleway.Instance.Inputs.SecurityGroupOutboundRuleArgs\n            {\n                Action = \"drop\",\n                IpRange = \"10.20.0.0/24\",\n            },\n        },\n    });\n\n    var web = new Scaleway.Instance.Server(\"web\", new()\n    {\n        Type = \"DEV1-S\",\n        Image = \"ubuntu_jammy\",\n        SecurityGroupId = www.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twww, err := instance.NewSecurityGroup(ctx, \"www\", \u0026instance.SecurityGroupArgs{\n\t\t\tInboundDefaultPolicy:  pulumi.String(\"drop\"),\n\t\t\tOutboundDefaultPolicy: pulumi.String(\"accept\"),\n\t\t\tInboundRules: instance.SecurityGroupInboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(22),\n\t\t\t\t\tIp:     pulumi.String(\"212.47.225.64\"),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026instance.SecurityGroupInboundRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"accept\"),\n\t\t\t\t\tPort:   pulumi.Int(443),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: instance.SecurityGroupOutboundRuleArray{\n\t\t\t\t\u0026instance.SecurityGroupOutboundRuleArgs{\n\t\t\t\t\tAction:  pulumi.String(\"drop\"),\n\t\t\t\t\tIpRange: pulumi.String(\"10.20.0.0/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 = instance.NewServer(ctx, \"web\", \u0026instance.ServerArgs{\n\t\t\tType:            pulumi.String(\"DEV1-S\"),\n\t\t\tImage:           pulumi.String(\"ubuntu_jammy\"),\n\t\t\tSecurityGroupId: www.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.pulumi.scaleway.instance.SecurityGroup;\nimport com.pulumi.scaleway.instance.SecurityGroupArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupInboundRuleArgs;\nimport com.pulumi.scaleway.instance.inputs.SecurityGroupOutboundRuleArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 www = new SecurityGroup(\"www\", SecurityGroupArgs.builder()\n            .inboundDefaultPolicy(\"drop\")\n            .outboundDefaultPolicy(\"accept\")\n            .inboundRules(            \n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(22)\n                    .ip(\"212.47.225.64\")\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(80)\n                    .build(),\n                SecurityGroupInboundRuleArgs.builder()\n                    .action(\"accept\")\n                    .port(443)\n                    .build())\n            .outboundRules(SecurityGroupOutboundRuleArgs.builder()\n                .action(\"drop\")\n                .ipRange(\"10.20.0.0/24\")\n                .build())\n            .build());\n\n        var web = new Server(\"web\", ServerArgs.builder()\n            .type(\"DEV1-S\")\n            .image(\"ubuntu_jammy\")\n            .securityGroupId(www.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  www:\n    type: scaleway:instance:SecurityGroup\n    properties:\n      inboundDefaultPolicy: drop\n      outboundDefaultPolicy: accept\n      inboundRules:\n        - action: accept\n          port: '22'\n          ip: 212.47.225.64\n        - action: accept\n          port: '80'\n        - action: accept\n          port: '443'\n      outboundRules:\n        - action: drop\n          ipRange: 10.20.0.0/24\n  web:\n    type: scaleway:instance:Server\n    properties:\n      type: DEV1-S\n      image: ubuntu_jammy\n      securityGroupId: ${www.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With private network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pn01 = new scaleway.network.PrivateNetwork(\"pn01\", {name: \"private_network_instance\"});\nconst base = new scaleway.instance.Server(\"base\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    privateNetworks: [{\n        pnId: pn01.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\npn01 = scaleway.network.PrivateNetwork(\"pn01\", name=\"private_network_instance\")\nbase = scaleway.instance.Server(\"base\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    private_networks=[{\n        \"pn_id\": pn01.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pn01 = new Scaleway.Network.PrivateNetwork(\"pn01\", new()\n    {\n        Name = \"private_network_instance\",\n    });\n\n    var @base = new Scaleway.Instance.Server(\"base\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        PrivateNetworks = new[]\n        {\n            new Scaleway.Instance.Inputs.ServerPrivateNetworkArgs\n            {\n                PnId = pn01.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpn01, err := network.NewPrivateNetwork(ctx, \"pn01\", \u0026network.PrivateNetworkArgs{\n\t\t\tName: pulumi.String(\"private_network_instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"base\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tPrivateNetworks: instance.ServerPrivateNetworkArray{\n\t\t\t\t\u0026instance.ServerPrivateNetworkArgs{\n\t\t\t\t\tPnId: pn01.ID(),\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.scaleway.network.PrivateNetwork;\nimport com.pulumi.scaleway.network.PrivateNetworkArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerPrivateNetworkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pn01 = new PrivateNetwork(\"pn01\", PrivateNetworkArgs.builder()\n            .name(\"private_network_instance\")\n            .build());\n\n        var base = new Server(\"base\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .privateNetworks(ServerPrivateNetworkArgs.builder()\n                .pnId(pn01.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pn01:\n    type: scaleway:network:PrivateNetwork\n    properties:\n      name: private_network_instance\n  base:\n    type: scaleway:instance:Server\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      privateNetworks:\n        - pnId: ${pn01.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Root volume configuration\n\n### Resized block volume with installed image\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst image = new scaleway.instance.Server(\"image\", {\n    type: \"PRO2-XXS\",\n    image: \"ubuntu_jammy\",\n    rootVolume: {\n        sizeInGb: 100,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nimage = scaleway.instance.Server(\"image\",\n    type=\"PRO2-XXS\",\n    image=\"ubuntu_jammy\",\n    root_volume={\n        \"size_in_gb\": 100,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var image = new Scaleway.Instance.Server(\"image\", new()\n    {\n        Type = \"PRO2-XXS\",\n        Image = \"ubuntu_jammy\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 100,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"image\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"PRO2-XXS\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb: pulumi.Int(100),\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 image = new Server(\"image\", ServerArgs.builder()\n            .type(\"PRO2-XXS\")\n            .image(\"ubuntu_jammy\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(100)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  image:\n    type: scaleway:instance:Server\n    properties:\n      type: PRO2-XXS\n      image: ubuntu_jammy\n      rootVolume:\n        sizeInGb: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### From snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst snapshot = scaleway.block.getSnapshot({\n    name: \"my_snapshot\",\n});\nconst fromSnapshot = new scaleway.block.Volume(\"from_snapshot\", {\n    snapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n    iops: 5000,\n});\nconst fromSnapshotServer = new scaleway.instance.Server(\"from_snapshot\", {\n    type: \"PRO2-XXS\",\n    rootVolume: {\n        volumeId: fromSnapshot.id,\n        volumeType: \"sbs_volume\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\nsnapshot = scaleway.block.get_snapshot(name=\"my_snapshot\")\nfrom_snapshot = scaleway.block.Volume(\"from_snapshot\",\n    snapshot_id=snapshot.id,\n    iops=5000)\nfrom_snapshot_server = scaleway.instance.Server(\"from_snapshot\",\n    type=\"PRO2-XXS\",\n    root_volume={\n        \"volume_id\": from_snapshot.id,\n        \"volume_type\": \"sbs_volume\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = Scaleway.Block.GetSnapshot.Invoke(new()\n    {\n        Name = \"my_snapshot\",\n    });\n\n    var fromSnapshot = new Scaleway.Block.Volume(\"from_snapshot\", new()\n    {\n        SnapshotId = snapshot.Apply(getSnapshotResult =\u003e getSnapshotResult.Id),\n        Iops = 5000,\n    });\n\n    var fromSnapshotServer = new Scaleway.Instance.Server(\"from_snapshot\", new()\n    {\n        Type = \"PRO2-XXS\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeId = fromSnapshot.Id,\n            VolumeType = \"sbs_volume\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/block\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := block.LookupSnapshot(ctx, \u0026block.LookupSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my_snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfromSnapshot, err := block.NewVolume(ctx, \"from_snapshot\", \u0026block.VolumeArgs{\n\t\t\tSnapshotId: pulumi.String(pulumi.String(snapshot.Id)),\n\t\t\tIops:       pulumi.Int(5000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewServer(ctx, \"from_snapshot\", \u0026instance.ServerArgs{\n\t\t\tType: pulumi.String(\"PRO2-XXS\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeId:   fromSnapshot.ID(),\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\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.scaleway.block.BlockFunctions;\nimport com.pulumi.scaleway.block.inputs.GetSnapshotArgs;\nimport com.pulumi.scaleway.block.Volume;\nimport com.pulumi.scaleway.block.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshot = BlockFunctions.getSnapshot(GetSnapshotArgs.builder()\n            .name(\"my_snapshot\")\n            .build());\n\n        var fromSnapshot = new Volume(\"fromSnapshot\", VolumeArgs.builder()\n            .snapshotId(snapshot.id())\n            .iops(5000)\n            .build());\n\n        var fromSnapshotServer = new Server(\"fromSnapshotServer\", ServerArgs.builder()\n            .type(\"PRO2-XXS\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeId(fromSnapshot.id())\n                .volumeType(\"sbs_volume\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fromSnapshot:\n    type: scaleway:block:Volume\n    name: from_snapshot\n    properties:\n      snapshotId: ${snapshot.id}\n      iops: 5000\n  fromSnapshotServer:\n    type: scaleway:instance:Server\n    name: from_snapshot\n    properties:\n      type: PRO2-XXS\n      rootVolume:\n        volumeId: ${fromSnapshot.id}\n        volumeType: sbs_volume\nvariables:\n  snapshot:\n    fn::invoke:\n      function: scaleway:block:getSnapshot\n      arguments:\n        name: my_snapshot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using Scaleway Block Storage (SBS) volume\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst server = new scaleway.instance.Server(\"server\", {\n    type: \"PLAY2-MICRO\",\n    image: \"ubuntu_jammy\",\n    rootVolume: {\n        volumeType: \"sbs_volume\",\n        sbsIops: 15000,\n        sizeInGb: 50,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver = scaleway.instance.Server(\"server\",\n    type=\"PLAY2-MICRO\",\n    image=\"ubuntu_jammy\",\n    root_volume={\n        \"volume_type\": \"sbs_volume\",\n        \"sbs_iops\": 15000,\n        \"size_in_gb\": 50,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var server = new Scaleway.Instance.Server(\"server\", new()\n    {\n        Type = \"PLAY2-MICRO\",\n        Image = \"ubuntu_jammy\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            VolumeType = \"sbs_volume\",\n            SbsIops = 15000,\n            SizeInGb = 50,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewServer(ctx, \"server\", \u0026instance.ServerArgs{\n\t\t\tType:  pulumi.String(\"PLAY2-MICRO\"),\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tVolumeType: pulumi.String(\"sbs_volume\"),\n\t\t\t\tSbsIops:    pulumi.Int(15000),\n\t\t\t\tSizeInGb:   pulumi.Int(50),\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 server = new Server(\"server\", ServerArgs.builder()\n            .type(\"PLAY2-MICRO\")\n            .image(\"ubuntu_jammy\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .volumeType(\"sbs_volume\")\n                .sbsIops(15000)\n                .sizeInGb(50)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  server:\n    type: scaleway:instance:Server\n    properties:\n      type: PLAY2-MICRO\n      image: ubuntu_jammy\n      rootVolume:\n        volumeType: sbs_volume\n        sbsIops: 15000\n        sizeInGb: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Private Network\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`privateNetwork`\" pulumi-lang-dotnet=\"`PrivateNetwork`\" pulumi-lang-go=\"`privateNetwork`\" pulumi-lang-python=\"`private_network`\" pulumi-lang-yaml=\"`privateNetwork`\" pulumi-lang-java=\"`privateNetwork`\"\u003e`privateNetwork`\u003c/span\u003e will recreate a new private network interface.\n\n- \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e - (Required) The private network ID where to connect.\n- \u003cspan pulumi-lang-nodejs=\"`macAddress`\" pulumi-lang-dotnet=\"`MacAddress`\" pulumi-lang-go=\"`macAddress`\" pulumi-lang-python=\"`mac_address`\" pulumi-lang-yaml=\"`macAddress`\" pulumi-lang-java=\"`macAddress`\"\u003e`macAddress`\u003c/span\u003e The private NIC MAC address.\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 private NIC state.\n- \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e - (Defaults to provider \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server must be created.\n\n\u003e **Important:** You can only attach an instance in the same zone as a private network.\n\u003e **Important:** Instance supports a maximum of 8 different private networks.\n\n## Import\n\nInstance servers can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/server:Server web fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                },
                "adminPasswordEncryptionSshKeyId": {
                    "type": "string",
                    "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                },
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                    "deprecationMessage": "bootscript is not supported anymore."
                },
                "cloudInit": {
                    "type": "string",
                    "description": "The cloud init script associated with this server"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "filesystems": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerFilesystem:ServerFilesystem"
                    },
                    "description": "List of filesystems attached to the server.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "The ID of the reserved IP that is attached to the server.\n"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the server is associated with.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                },
                "placementGroupPolicyRespected": {
                    "type": "boolean",
                    "description": "(Deprecated) Always false, use\u003cspan pulumi-lang-nodejs=\" instancePlacementGroup \" pulumi-lang-dotnet=\" InstancePlacementGroup \" pulumi-lang-go=\" instancePlacementGroup \" pulumi-lang-python=\" instance_placement_group \" pulumi-lang-yaml=\" instancePlacementGroup \" pulumi-lang-java=\" instancePlacementGroup \"\u003e instancePlacementGroup \u003c/span\u003eresource to known when the placement group policy is respected.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPublicIp:ServerPublicIp"
                    },
                    "description": "The list of public IPs of the server.\n"
                },
                "replaceOnTypeChange": {
                    "type": "boolean",
                    "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                },
                "rootVolume": {
                    "$ref": "#/types/scaleway:instance/ServerRootVolume:ServerRootVolume",
                    "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                },
                "userData": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n"
                }
            },
            "required": [
                "bootscriptId",
                "cloudInit",
                "filesystems",
                "name",
                "organizationId",
                "placementGroupPolicyRespected",
                "privateIps",
                "projectId",
                "publicIps",
                "rootVolume",
                "securityGroupId",
                "state",
                "type",
                "userData"
            ],
            "inputProperties": {
                "additionalVolumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                },
                "adminPasswordEncryptionSshKeyId": {
                    "type": "string",
                    "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                },
                "bootType": {
                    "type": "string",
                    "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                },
                "bootscriptId": {
                    "type": "string",
                    "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                    "deprecationMessage": "bootscript is not supported anymore."
                },
                "cloudInit": {
                    "type": "string",
                    "description": "The cloud init script associated with this server"
                },
                "enableDynamicIp": {
                    "type": "boolean",
                    "description": "If true a dynamic IP will be attached to the server.\n"
                },
                "filesystems": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerFilesystem:ServerFilesystem"
                    },
                    "description": "List of filesystems attached to the server.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                },
                "ipId": {
                    "type": "string",
                    "description": "The ID of the reserved IP that is attached to the server.\n"
                },
                "ipIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the server.\n"
                },
                "placementGroupId": {
                    "type": "string",
                    "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                },
                "privateIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPrivateIp:ServerPrivateIp"
                    },
                    "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                },
                "privateNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPrivateNetwork:ServerPrivateNetwork"
                    },
                    "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "protected": {
                    "type": "boolean",
                    "description": "Set to true to activate server protection option.\n"
                },
                "publicIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:instance/ServerPublicIp:ServerPublicIp"
                    },
                    "description": "The list of public IPs of the server.\n"
                },
                "replaceOnTypeChange": {
                    "type": "boolean",
                    "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                },
                "rootVolume": {
                    "$ref": "#/types/scaleway:instance/ServerRootVolume:ServerRootVolume",
                    "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                },
                "securityGroupId": {
                    "type": "string",
                    "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the server.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                },
                "userData": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Server resources.\n",
                "properties": {
                    "additionalVolumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The [additional volumes](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types)\nattached to the server. Updates to this field will trigger a stop/start of the server.\n\n\u003e **Important:** If this field contains local volumes, the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n\n\u003e **Important:** If this field contains local volumes, you have to first detach them, in one apply, and then delete the volume in another apply.\n"
                    },
                    "adminPasswordEncryptionSshKeyId": {
                        "type": "string",
                        "description": "The ID of the SSH RSA key that will be used to encrypt the initial admin password for OS requiring it.\nMandatory for Windows OS. The\u003cspan pulumi-lang-nodejs=\" publicKey \" pulumi-lang-dotnet=\" PublicKey \" pulumi-lang-go=\" publicKey \" pulumi-lang-python=\" public_key \" pulumi-lang-yaml=\" publicKey \" pulumi-lang-java=\" publicKey \"\u003e publicKey \u003c/span\u003evalue of this key is used to encrypt the admin password.\nWhen set to an empty string, it resets this value and\u003cspan pulumi-lang-nodejs=\" adminPasswordEncryptedValue \" pulumi-lang-dotnet=\" AdminPasswordEncryptedValue \" pulumi-lang-go=\" adminPasswordEncryptedValue \" pulumi-lang-python=\" admin_password_encrypted_value \" pulumi-lang-yaml=\" adminPasswordEncryptedValue \" pulumi-lang-java=\" adminPasswordEncryptedValue \"\u003e adminPasswordEncryptedValue \u003c/span\u003eto an empty string so a new password may be generated.\n"
                    },
                    "bootType": {
                        "type": "string",
                        "description": "The boot Type of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bootscript`\" pulumi-lang-dotnet=\"`Bootscript`\" pulumi-lang-go=\"`bootscript`\" pulumi-lang-python=\"`bootscript`\" pulumi-lang-yaml=\"`bootscript`\" pulumi-lang-java=\"`bootscript`\"\u003e`bootscript`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`rescue`\" pulumi-lang-dotnet=\"`Rescue`\" pulumi-lang-go=\"`rescue`\" pulumi-lang-python=\"`rescue`\" pulumi-lang-yaml=\"`rescue`\" pulumi-lang-java=\"`rescue`\"\u003e`rescue`\u003c/span\u003e.\n"
                    },
                    "bootscriptId": {
                        "type": "string",
                        "description": "ID of the target bootscript (set\u003cspan pulumi-lang-nodejs=\" bootType \" pulumi-lang-dotnet=\" BootType \" pulumi-lang-go=\" bootType \" pulumi-lang-python=\" boot_type \" pulumi-lang-yaml=\" bootType \" pulumi-lang-java=\" bootType \"\u003e bootType \u003c/span\u003eto bootscript)",
                        "deprecationMessage": "bootscript is not supported anymore."
                    },
                    "cloudInit": {
                        "type": "string",
                        "description": "The cloud init script associated with this server"
                    },
                    "enableDynamicIp": {
                        "type": "boolean",
                        "description": "If true a dynamic IP will be attached to the server.\n"
                    },
                    "filesystems": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ServerFilesystem:ServerFilesystem"
                        },
                        "description": "List of filesystems attached to the server.\n"
                    },
                    "image": {
                        "type": "string",
                        "description": "The UUID or the label of the base image used by the server. You can use [this endpoint](https://www.scaleway.com/en/developers/api/marketplace/#path-marketplace-images-list-marketplace-images)\nto find either the right \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 or the right local image `ID` for a given \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. Optional when creating an instance with an existing root volume.\n\nYou can check the available labels with our [CLI](https://www.scaleway.com/en/docs/compute/instances/api-cli/creating-managing-instances-with-cliv2/). ```scw marketplace image list```\n\nTo retrieve more information by label please use: ```scw marketplace image get label=\u003cLABEL\u003e```\n\nTo obtain a local-image UUID from a label, please use: ```scw marketplace local-image list image-label=\u003cLABEL\u003e```\n"
                    },
                    "ipId": {
                        "type": "string",
                        "description": "The ID of the reserved IP that is attached to the server.\n"
                    },
                    "ipIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of ID of reserved IPs that are attached to the server. Cannot be used with \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e.\n\n\u003e \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e migration: if moving the ip from the old \u003cspan pulumi-lang-nodejs=\"`ipId`\" pulumi-lang-dotnet=\"`IpId`\" pulumi-lang-go=\"`ipId`\" pulumi-lang-python=\"`ip_id`\" pulumi-lang-yaml=\"`ipId`\" pulumi-lang-java=\"`ipId`\"\u003e`ipId`\u003c/span\u003e field to the new \u003cspan pulumi-lang-nodejs=\"`ipIds`\" pulumi-lang-dotnet=\"`IpIds`\" pulumi-lang-go=\"`ipIds`\" pulumi-lang-python=\"`ip_ids`\" pulumi-lang-yaml=\"`ipIds`\" pulumi-lang-java=\"`ipIds`\"\u003e`ipIds`\u003c/span\u003e, it should not detach the ip.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the server.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the server is associated with.\n"
                    },
                    "placementGroupId": {
                        "type": "string",
                        "description": "The [placement group](\u003chttps://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group\u003e the server is attached to.\n\n\u003e **Important:** When updating \u003cspan pulumi-lang-nodejs=\"`placementGroupId`\" pulumi-lang-dotnet=\"`PlacementGroupId`\" pulumi-lang-go=\"`placementGroupId`\" pulumi-lang-python=\"`placement_group_id`\" pulumi-lang-yaml=\"`placementGroupId`\" pulumi-lang-java=\"`placementGroupId`\"\u003e`placementGroupId`\u003c/span\u003e the \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e, otherwise it will fail.\n"
                    },
                    "placementGroupPolicyRespected": {
                        "type": "boolean",
                        "description": "(Deprecated) Always false, use\u003cspan pulumi-lang-nodejs=\" instancePlacementGroup \" pulumi-lang-dotnet=\" InstancePlacementGroup \" pulumi-lang-go=\" instancePlacementGroup \" pulumi-lang-python=\" instance_placement_group \" pulumi-lang-yaml=\" instancePlacementGroup \" pulumi-lang-java=\" instancePlacementGroup \"\u003e instancePlacementGroup \u003c/span\u003eresource to known when the placement group policy is respected.\n"
                    },
                    "privateIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ServerPrivateIp:ServerPrivateIp"
                        },
                        "description": "The list of private IPv4 and IPv6 addresses associated with the resource.\n"
                    },
                    "privateNetworks": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ServerPrivateNetwork:ServerPrivateNetwork"
                        },
                        "description": "The private network associated with the server.\nUse the \u003cspan pulumi-lang-nodejs=\"`pnId`\" pulumi-lang-dotnet=\"`PnId`\" pulumi-lang-go=\"`pnId`\" pulumi-lang-python=\"`pn_id`\" pulumi-lang-yaml=\"`pnId`\" pulumi-lang-java=\"`pnId`\"\u003e`pnId`\u003c/span\u003e key to attach a \u003cspan pulumi-lang-nodejs=\"[privateNetwork]\" pulumi-lang-dotnet=\"[PrivateNetwork]\" pulumi-lang-go=\"[privateNetwork]\" pulumi-lang-python=\"[private_network]\" pulumi-lang-yaml=\"[privateNetwork]\" pulumi-lang-java=\"[privateNetwork]\"\u003e[privateNetwork]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-private-nics-list-all-private-nics) on your instance.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the server is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Set to true to activate server protection option.\n"
                    },
                    "publicIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:instance/ServerPublicIp:ServerPublicIp"
                        },
                        "description": "The list of public IPs of the server.\n"
                    },
                    "replaceOnTypeChange": {
                        "type": "boolean",
                        "description": "If true, the server will be replaced if \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 is changed. Otherwise, the server will migrate.\n"
                    },
                    "rootVolume": {
                        "$ref": "#/types/scaleway:instance/ServerRootVolume:ServerRootVolume",
                        "description": "Root [volume](https://www.scaleway.com/en/developers/api/instance/#path-volume-types-list-volume-types) attached to the server on creation.\n"
                    },
                    "securityGroupId": {
                        "type": "string",
                        "description": "The [security group](https://www.scaleway.com/en/developers/api/instance/#path-security-groups-update-a-security-group9) the server is attached to.\n\n\u003e **Important:** If you don't specify a security group, a default one will be created, which won't be tracked by Terraform unless you import it.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the server. Possible values are: \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`standby`\" pulumi-lang-dotnet=\"`Standby`\" pulumi-lang-go=\"`standby`\" pulumi-lang-python=\"`standby`\" pulumi-lang-yaml=\"`standby`\" pulumi-lang-java=\"`standby`\"\u003e`standby`\u003c/span\u003e.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The tags associated with the server.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The commercial type of the server.\nYou find all the available types on the [pricing page](https://www.scaleway.com/en/pricing/).\nUpdates to this field will migrate the server, local storage constraint must be respected. [More info](https://www.scaleway.com/en/docs/compute/instances/api-cli/migrating-instances/).\nUse \u003cspan pulumi-lang-nodejs=\"`replaceOnTypeChange`\" pulumi-lang-dotnet=\"`ReplaceOnTypeChange`\" pulumi-lang-go=\"`replaceOnTypeChange`\" pulumi-lang-python=\"`replace_on_type_change`\" pulumi-lang-yaml=\"`replaceOnTypeChange`\" pulumi-lang-java=\"`replaceOnTypeChange`\"\u003e`replaceOnTypeChange`\u003c/span\u003e to trigger replacement instead of migration.\n\n\u003e **Important:** If \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 change and migration occurs, the server will be stopped and changed backed to its original state. It will be started again if it was running.\n"
                    },
                    "userData": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "The user data associated with the server.\nUse the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n- Binary files using filebase64.\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceServer:InstanceServer"
                }
            ]
        },
        "scaleway:instance/snapshot:Snapshot": {
            "description": "Creates and manages Scaleway Compute Snapshots.\nFor more information,\nsee the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-snapshots-list-snapshots).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.Snapshot(\"main\", {\n    name: \"some-snapshot-name\",\n    volumeId: \"11111111-1111-1111-1111-111111111111\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.Snapshot(\"main\",\n    name=\"some-snapshot-name\",\n    volume_id=\"11111111-1111-1111-1111-111111111111\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.Snapshot(\"main\", new()\n    {\n        Name = \"some-snapshot-name\",\n        VolumeId = \"11111111-1111-1111-1111-111111111111\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewSnapshot(ctx, \"main\", \u0026instance.SnapshotArgs{\n\t\t\tName:     pulumi.String(\"some-snapshot-name\"),\n\t\t\tVolumeId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\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.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Snapshot(\"main\", SnapshotArgs.builder()\n            .name(\"some-snapshot-name\")\n            .volumeId(\"11111111-1111-1111-1111-111111111111\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:instance:Snapshot\n    properties:\n      name: some-snapshot-name\n      volumeId: 11111111-1111-1111-1111-111111111111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with Unified type snapshot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.instance.Volume(\"main\", {\n    type: \"l_ssd\",\n    sizeInGb: 10,\n});\nconst mainServer = new scaleway.instance.Server(\"main\", {\n    image: \"ubuntu_jammy\",\n    type: \"DEV1-S\",\n    rootVolume: {\n        sizeInGb: 10,\n        volumeType: \"l_ssd\",\n    },\n    additionalVolumeIds: [main.id],\n});\nconst mainSnapshot = new scaleway.instance.Snapshot(\"main\", {volumeId: main.id}, {\n    dependsOn: [mainServer],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.instance.Volume(\"main\",\n    type=\"l_ssd\",\n    size_in_gb=10)\nmain_server = scaleway.instance.Server(\"main\",\n    image=\"ubuntu_jammy\",\n    type=\"DEV1-S\",\n    root_volume={\n        \"size_in_gb\": 10,\n        \"volume_type\": \"l_ssd\",\n    },\n    additional_volume_ids=[main.id])\nmain_snapshot = scaleway.instance.Snapshot(\"main\", volume_id=main.id,\nopts = pulumi.ResourceOptions(depends_on=[main_server]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Instance.Volume(\"main\", new()\n    {\n        Type = \"l_ssd\",\n        SizeInGb = 10,\n    });\n\n    var mainServer = new Scaleway.Instance.Server(\"main\", new()\n    {\n        Image = \"ubuntu_jammy\",\n        Type = \"DEV1-S\",\n        RootVolume = new Scaleway.Instance.Inputs.ServerRootVolumeArgs\n        {\n            SizeInGb = 10,\n            VolumeType = \"l_ssd\",\n        },\n        AdditionalVolumeIds = new[]\n        {\n            main.Id,\n        },\n    });\n\n    var mainSnapshot = new Scaleway.Instance.Snapshot(\"main\", new()\n    {\n        VolumeId = main.Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            mainServer,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := instance.NewVolume(ctx, \"main\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"l_ssd\"),\n\t\t\tSizeInGb: pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmainServer, err := instance.NewServer(ctx, \"main\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_jammy\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t\tRootVolume: \u0026instance.ServerRootVolumeArgs{\n\t\t\t\tSizeInGb:   pulumi.Int(10),\n\t\t\t\tVolumeType: pulumi.String(\"l_ssd\"),\n\t\t\t},\n\t\t\tAdditionalVolumeIds: pulumi.StringArray{\n\t\t\t\tmain.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 = instance.NewSnapshot(ctx, \"main\", \u0026instance.SnapshotArgs{\n\t\t\tVolumeId: main.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmainServer,\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.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport com.pulumi.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.inputs.ServerRootVolumeArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Volume(\"main\", VolumeArgs.builder()\n            .type(\"l_ssd\")\n            .sizeInGb(10)\n            .build());\n\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .image(\"ubuntu_jammy\")\n            .type(\"DEV1-S\")\n            .rootVolume(ServerRootVolumeArgs.builder()\n                .sizeInGb(10)\n                .volumeType(\"l_ssd\")\n                .build())\n            .additionalVolumeIds(main.id())\n            .build());\n\n        var mainSnapshot = new Snapshot(\"mainSnapshot\", SnapshotArgs.builder()\n            .volumeId(main.id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(mainServer)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:instance:Volume\n    properties:\n      type: l_ssd\n      sizeInGb: 10\n  mainServer:\n    type: scaleway:instance:Server\n    name: main\n    properties:\n      image: ubuntu_jammy\n      type: DEV1-S\n      rootVolume:\n        sizeInGb: 10\n        volumeType: l_ssd\n      additionalVolumeIds:\n        - ${main.id}\n  mainSnapshot:\n    type: scaleway:instance:Snapshot\n    name: main\n    properties:\n      volumeId: ${main.id}\n    options:\n      dependsOn:\n        - ${mainServer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example importing a local qcow2 file\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst bucket = new scaleway.object.Bucket(\"bucket\", {name: \"snapshot-qcow-import\"});\nconst qcow = new scaleway.object.Item(\"qcow\", {\n    bucket: bucket.name,\n    key: \"server.qcow2\",\n    file: \"myqcow.qcow2\",\n});\nconst snapshot = new scaleway.instance.Snapshot(\"snapshot\", {\"import\": {\n    bucket: qcow.bucket,\n    key: qcow.key,\n}});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nbucket = scaleway.object.Bucket(\"bucket\", name=\"snapshot-qcow-import\")\nqcow = scaleway.object.Item(\"qcow\",\n    bucket=bucket.name,\n    key=\"server.qcow2\",\n    file=\"myqcow.qcow2\")\nsnapshot = scaleway.instance.Snapshot(\"snapshot\", import_={\n    \"bucket\": qcow.bucket,\n    \"key\": qcow.key,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bucket = new Scaleway.Object.Bucket(\"bucket\", new()\n    {\n        Name = \"snapshot-qcow-import\",\n    });\n\n    var qcow = new Scaleway.Object.Item(\"qcow\", new()\n    {\n        Bucket = bucket.Name,\n        Key = \"server.qcow2\",\n        File = \"myqcow.qcow2\",\n    });\n\n    var snapshot = new Scaleway.Instance.Snapshot(\"snapshot\", new()\n    {\n        Import = new Scaleway.Instance.Inputs.SnapshotImportArgs\n        {\n            Bucket = qcow.Bucket,\n            Key = qcow.Key,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/object\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := object.NewBucket(ctx, \"bucket\", \u0026object.BucketArgs{\n\t\t\tName: pulumi.String(\"snapshot-qcow-import\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tqcow, err := object.NewItem(ctx, \"qcow\", \u0026object.ItemArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tKey:    pulumi.String(\"server.qcow2\"),\n\t\t\tFile:   pulumi.String(\"myqcow.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = instance.NewSnapshot(ctx, \"snapshot\", \u0026instance.SnapshotArgs{\n\t\t\tImport: \u0026instance.SnapshotImportArgs{\n\t\t\t\tBucket: qcow.Bucket,\n\t\t\t\tKey:    qcow.Key,\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.scaleway.object.Bucket;\nimport com.pulumi.scaleway.object.BucketArgs;\nimport com.pulumi.scaleway.object.Item;\nimport com.pulumi.scaleway.object.ItemArgs;\nimport com.pulumi.scaleway.instance.Snapshot;\nimport com.pulumi.scaleway.instance.SnapshotArgs;\nimport com.pulumi.scaleway.instance.inputs.SnapshotImportArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 bucket = new Bucket(\"bucket\", BucketArgs.builder()\n            .name(\"snapshot-qcow-import\")\n            .build());\n\n        var qcow = new Item(\"qcow\", ItemArgs.builder()\n            .bucket(bucket.name())\n            .key(\"server.qcow2\")\n            .file(\"myqcow.qcow2\")\n            .build());\n\n        var snapshot = new Snapshot(\"snapshot\", SnapshotArgs.builder()\n            .import_(SnapshotImportArgs.builder()\n                .bucket(qcow.bucket())\n                .key(qcow.key())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bucket:\n    type: scaleway:object:Bucket\n    properties:\n      name: snapshot-qcow-import\n  qcow:\n    type: scaleway:object:Item\n    properties:\n      bucket: ${bucket.name}\n      key: server.qcow2\n      file: myqcow.qcow2\n  snapshot:\n    type: scaleway:instance:Snapshot\n    properties:\n      import:\n        bucket: ${qcow.bucket}\n        key: ${qcow.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSnapshots can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/snapshot:Snapshot main fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The snapshot creation time.\n"
                },
                "import": {
                    "$ref": "#/types/scaleway:instance/SnapshotImport:SnapshotImport",
                    "description": "Import a snapshot from a qcow2 file located in a bucket\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the snapshot is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "(Optional) The size of the snapshot.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "organizationId",
                "projectId",
                "sizeInGb",
                "type"
            ],
            "inputProperties": {
                "import": {
                    "$ref": "#/types/scaleway:instance/SnapshotImport:SnapshotImport",
                    "description": "Import a snapshot from a qcow2 file located in a bucket\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the snapshot.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n",
                    "willReplaceOnChanges": true
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume to take a snapshot from.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Snapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The snapshot creation time.\n"
                    },
                    "import": {
                        "$ref": "#/types/scaleway:instance/SnapshotImport:SnapshotImport",
                        "description": "Import a snapshot from a qcow2 file located in a bucket\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the snapshot. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the snapshot is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the snapshot is\nassociated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "(Optional) The size of the snapshot.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the snapshot.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The snapshot's volume type.  The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD).\nUpdates to this field will recreate a new resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "The ID of the volume to take a snapshot from.\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which\nthe snapshot should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceSnapshot:InstanceSnapshot"
                }
            ]
        },
        "scaleway:instance/userData:UserData": {
            "description": "Creates and manages Scaleway compute Instance User Data values.\n\nUser data is a key value store API you can use to provide data from and to your server without authentication. It is the mechanism by which a user can pass information contained in a local file to an Instance at launch time.\n\nThe typical use case is to pass something like a shell script or a configuration file as user data.\n\nFor more information about \u003cspan pulumi-lang-nodejs=\"[userData]\" pulumi-lang-dotnet=\"[UserData]\" pulumi-lang-go=\"[userData]\" pulumi-lang-python=\"[user_data]\" pulumi-lang-yaml=\"[userData]\" pulumi-lang-java=\"[userData]\"\u003e[userData]\u003c/span\u003e(https://www.scaleway.com/en/developers/api/instance/#path-user-data-list-user-data) check [our documentation guide](https://www.scaleway.com/en/docs/compute/instances/how-to/use-boot-modes/#how-to-use-cloud-init).\n\nAbout cloud-init documentation please check [the official documentation](https://cloudinit.readthedocs.io/en/latest/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst config = new pulumi.Config();\nconst userData = config.getObject\u003cRecord\u003cstring, any\u003e\u003e(\"userData\") || {\n    \"cloud-init\": `#cloud-config\napt-update: true\napt-upgrade: true\n`,\n    foo: \"bar\",\n};\nconst mainServer = new scaleway.instance.Server(\"main\", {\n    image: \"ubuntu_focal\",\n    type: \"DEV1-S\",\n});\n// User data with a single value\nconst main = new scaleway.instance.UserData(\"main\", {\n    serverId: mainServer.id,\n    key: \"foo\",\n    value: \"bar\",\n});\n// User Data with many keys.\nconst data: scaleway.instance.UserData[] = [];\nfor (const range of Object.entries(userData).sort().map(([k, v]) =\u003e ({key: k, value: v}))) {\n    data.push(new scaleway.instance.UserData(`data-${range.key}`, {\n        serverId: mainServer.id,\n        key: range.key,\n        value: range.value,\n    }));\n}\n```\n```python\nimport pulumi\nfrom typing import Any\nimport pulumiverse_scaleway as scaleway\n\nconfig = pulumi.Config()\nuser_data = config.get_object(\"userData\")\nif user_data is None:\n    user_data = {\n        \"cloud-init\": \"\"\"#cloud-config\napt-update: true\napt-upgrade: true\n\"\"\",\n        \"foo\": \"bar\",\n    }\nmain_server = scaleway.instance.Server(\"main\",\n    image=\"ubuntu_focal\",\n    type=\"DEV1-S\")\n# User data with a single value\nmain = scaleway.instance.UserData(\"main\",\n    server_id=main_server.id,\n    key=\"foo\",\n    value=\"bar\")\n# User Data with many keys.\ndata: list[Any] = []\nfor range in [{\"key\": k, \"value\": v} for [k, v] in sorted((user_data).items())]:\n    data.append(scaleway.instance.UserData(f\"data-{range['key']}\",\n        server_id=main_server.id,\n        key=range[\"key\"],\n        value=range[\"value\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var userData = config.GetObject\u003cDictionary\u003cstring, dynamic\u003e\u003e(\"userData\") ?? \n    {\n        { \"cloud-init\", @\"#cloud-config\napt-update: true\napt-upgrade: true\n\" },\n        { \"foo\", \"bar\" },\n    };\n    var mainServer = new Scaleway.Instance.Server(\"main\", new()\n    {\n        Image = \"ubuntu_focal\",\n        Type = \"DEV1-S\",\n    });\n\n    // User data with a single value\n    var main = new Scaleway.Instance.UserData(\"main\", new()\n    {\n        ServerId = mainServer.Id,\n        Key = \"foo\",\n        Value = \"bar\",\n    });\n\n    // User Data with many keys.\n    var data = new List\u003cScaleway.Instance.UserData\u003e();\n    foreach (var range in userData.Select(pair =\u003e new { pair.Key, pair.Value }))\n    {\n        data.Add(new Scaleway.Instance.UserData($\"data-{range.Key}\", new()\n        {\n            ServerId = mainServer.Id,\n            Key = range.Key,\n            Value = range.Value,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tuserData := map[string]interface{}{\n\t\t\t\"cloud-init\": \"#cloud-config\\napt-update: true\\napt-upgrade: true\\n\",\n\t\t\t\"foo\":        \"bar\",\n\t\t}\n\t\tif param := cfg.GetObject(\"userData\"); param != nil {\n\t\t\tuserData = param\n\t\t}\n\t\tmainServer, err := instance.NewServer(ctx, \"main\", \u0026instance.ServerArgs{\n\t\t\tImage: pulumi.String(\"ubuntu_focal\"),\n\t\t\tType:  pulumi.String(\"DEV1-S\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// User data with a single value\n\t\t_, err = instance.NewUserData(ctx, \"main\", \u0026instance.UserDataArgs{\n\t\t\tServerId: mainServer.ID(),\n\t\t\tKey:      pulumi.String(\"foo\"),\n\t\t\tValue:    pulumi.String(\"bar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// User Data with many keys.\n\t\tvar data []*instance.UserData\n\t\tfor key0, val0 := range userData {\n\t\t\t__res, err := instance.NewUserData(ctx, fmt.Sprintf(\"data-%v\", key0), \u0026instance.UserDataArgs{\n\t\t\t\tServerId: mainServer.ID(),\n\t\t\t\tKey:      pulumi.String(pulumi.String(key0)),\n\t\t\t\tValue:    pulumi.Any(val0),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tdata = append(data, __res)\n\t\t}\n\t\treturn nil\n\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.scaleway.instance.Server;\nimport com.pulumi.scaleway.instance.ServerArgs;\nimport com.pulumi.scaleway.instance.UserData;\nimport com.pulumi.scaleway.instance.UserDataArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var userData = config.get(\"userData\").orElse(Map.ofEntries(\n            Map.entry(\"cloud-init\", \"\"\"\n#cloud-config\napt-update: true\napt-upgrade: true\n            \"\"\"),\n            Map.entry(\"foo\", \"bar\")\n        ));\n        var mainServer = new Server(\"mainServer\", ServerArgs.builder()\n            .image(\"ubuntu_focal\")\n            .type(\"DEV1-S\")\n            .build());\n\n        // User data with a single value\n        var main = new UserData(\"main\", UserDataArgs.builder()\n            .serverId(mainServer.id())\n            .key(\"foo\")\n            .value(\"bar\")\n            .build());\n\n        // User Data with many keys.\n        for (var range : KeyedValue.of(userData)) {\n            new UserData(\"data-\" + range.key(), UserDataArgs.builder()\n                .serverId(mainServer.id())\n                .key(range.key())\n                .value(range.value())\n                .build());\n        }\n\n    }\n}\n```\n```yaml\nconfiguration:\n  userData:\n    type: object\n    default:\n      cloud-init: |\n        #cloud-config\n        apt-update: true\n        apt-upgrade: true\n      foo: bar\nresources:\n  # User data with a single value\n  main:\n    type: scaleway:instance:UserData\n    properties:\n      serverId: ${mainServer.id}\n      key: foo\n      value: bar\n  # User Data with many keys.\n  data:\n    type: scaleway:instance:UserData\n    properties:\n      serverId: ${mainServer.id}\n      key: ${range.key}\n      value: ${range.value}\n    options: {}\n  mainServer:\n    type: scaleway:instance:Server\n    name: main\n    properties:\n      image: ubuntu_focal\n      type: DEV1-S\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUser data can be imported using the `{zone}/{key}/{server_id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/userData:UserData main fr-par-1/cloud-init/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key of the user data.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value associated with your key\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n"
                }
            },
            "required": [
                "key",
                "serverId",
                "value"
            ],
            "inputProperties": {
                "key": {
                    "type": "string",
                    "description": "Key of the user data.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The ID of the server associated with.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value associated with your key\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "key",
                "serverId",
                "value"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering UserData resources.\n",
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "Key of the user data.\n"
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The ID of the server associated with.\n"
                    },
                    "value": {
                        "type": "string",
                        "description": "Value associated with your key\n"
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the server should be created.\n\n\u003e **Important:**   Use the `cloud-init` key to use [cloud-init](https://cloudinit.readthedocs.io/en/latest/) on your instance.\nYou can define values using:\n- string\n- UTF-8 encoded file content using file\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceUserData:InstanceUserData"
                }
            ]
        },
        "scaleway:instance/volume:Volume": {
            "description": "Creates and manages Scaleway compute Instance Volumes.\nFor more information, see the [API documentation](https://www.scaleway.com/en/developers/api/instance/#path-volumes-list-volumes).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst serverVolume = new scaleway.instance.Volume(\"server_volume\", {\n    type: \"l_ssd\",\n    name: \"some-volume-name\",\n    sizeInGb: 20,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nserver_volume = scaleway.instance.Volume(\"server_volume\",\n    type=\"l_ssd\",\n    name=\"some-volume-name\",\n    size_in_gb=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var serverVolume = new Scaleway.Instance.Volume(\"server_volume\", new()\n    {\n        Type = \"l_ssd\",\n        Name = \"some-volume-name\",\n        SizeInGb = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/instance\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := instance.NewVolume(ctx, \"server_volume\", \u0026instance.VolumeArgs{\n\t\t\tType:     pulumi.String(\"l_ssd\"),\n\t\t\tName:     pulumi.String(\"some-volume-name\"),\n\t\t\tSizeInGb: pulumi.Int(20),\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.scaleway.instance.Volume;\nimport com.pulumi.scaleway.instance.VolumeArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 serverVolume = new Volume(\"serverVolume\", VolumeArgs.builder()\n            .type(\"l_ssd\")\n            .name(\"some-volume-name\")\n            .sizeInGb(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  serverVolume:\n    type: scaleway:instance:Volume\n    name: server_volume\n    properties:\n      type: l_ssd\n      name: some-volume-name\n      sizeInGb: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nvolumes can be imported using the `{zone}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:instance/volume:Volume server_volume fr-par-1/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "fromSnapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n"
                },
                "migrateToSbs": {
                    "type": "boolean",
                    "description": "If true, consider that this volume may have been migrated and no longer exists."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided it will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The organization ID the volume is associated with.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n"
                },
                "serverId": {
                    "type": "string",
                    "description": "The id of the associated server.\n"
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n"
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n"
                }
            },
            "required": [
                "name",
                "organizationId",
                "projectId",
                "serverId",
                "type"
            ],
            "inputProperties": {
                "fromSnapshotId": {
                    "type": "string",
                    "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n",
                    "willReplaceOnChanges": true
                },
                "migrateToSbs": {
                    "type": "boolean",
                    "description": "If true, consider that this volume may have been migrated and no longer exists."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the volume. If not provided it will be randomly generated.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "sizeInGb": {
                    "type": "integer",
                    "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags to apply to the volume.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Volume resources.\n",
                "properties": {
                    "fromSnapshotId": {
                        "type": "string",
                        "description": "If set, the new volume will be created from this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n",
                        "willReplaceOnChanges": true
                    },
                    "migrateToSbs": {
                        "type": "boolean",
                        "description": "If true, consider that this volume may have been migrated and no longer exists."
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the volume. If not provided it will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The organization ID the volume is associated with.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the volume is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverId": {
                        "type": "string",
                        "description": "The id of the associated server.\n"
                    },
                    "sizeInGb": {
                        "type": "integer",
                        "description": "The size of the volume. Only one of \u003cspan pulumi-lang-nodejs=\"`sizeInGb`\" pulumi-lang-dotnet=\"`SizeInGb`\" pulumi-lang-go=\"`sizeInGb`\" pulumi-lang-python=\"`size_in_gb`\" pulumi-lang-yaml=\"`sizeInGb`\" pulumi-lang-java=\"`sizeInGb`\"\u003e`sizeInGb`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`fromSnapshotId`\" pulumi-lang-dotnet=\"`FromSnapshotId`\" pulumi-lang-go=\"`fromSnapshotId`\" pulumi-lang-python=\"`from_snapshot_id`\" pulumi-lang-yaml=\"`fromSnapshotId`\" pulumi-lang-java=\"`fromSnapshotId`\"\u003e`fromSnapshotId`\u003c/span\u003e should be specified.\n\n\u003e **Important:** It is not possible to resize local and scratch volumes. Updates to this field will recreate the resource.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags to apply to the volume.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the volume. The possible values are: \u003cspan pulumi-lang-nodejs=\"`lSsd`\" pulumi-lang-dotnet=\"`LSsd`\" pulumi-lang-go=\"`lSsd`\" pulumi-lang-python=\"`l_ssd`\" pulumi-lang-yaml=\"`lSsd`\" pulumi-lang-java=\"`lSsd`\"\u003e`lSsd`\u003c/span\u003e (Local SSD), \u003cspan pulumi-lang-nodejs=\"`scratch`\" pulumi-lang-dotnet=\"`Scratch`\" pulumi-lang-go=\"`scratch`\" pulumi-lang-python=\"`scratch`\" pulumi-lang-yaml=\"`scratch`\" pulumi-lang-java=\"`scratch`\"\u003e`scratch`\u003c/span\u003e (Local Scratch SSD).\n",
                        "willReplaceOnChanges": true
                    },
                    "zone": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\"\u003e`zone`\u003c/span\u003e) The zone in which the volume should be created.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "scaleway:index/instanceVolume:InstanceVolume"
                }
            ]
        },
        "scaleway:interlink/link:Link": {
            "description": "Creates and manages Scaleway Interlink Links.\n\nA link is a logical Interlink session created within a PoP, representing the connection between your infrastructure and Scaleway. Links can be hosted (facilitated by a partner's shared connection) or self-hosted (using your own dedicated physical connection).\n\n\nFor more information, see [the Interlink documentation](https://www.scaleway.com/en/docs/network/interlink/) and [API documentation](https://www.scaleway.com/en/developers/api/interlink/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pop = scaleway.interlink.getPop({\n    name: \"Telehouse TH2\",\n});\nconst partner = scaleway.interlink.getPartner({\n    name: \"FranceIX\",\n});\nconst main = new scaleway.interlink.Link(\"main\", {\n    name: \"my-hosted-link\",\n    popId: pop.then(pop =\u003e pop.id),\n    partnerId: partner.then(partner =\u003e partner.id),\n    bandwidthMbps: 50,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\npop = scaleway.interlink.get_pop(name=\"Telehouse TH2\")\npartner = scaleway.interlink.get_partner(name=\"FranceIX\")\nmain = scaleway.interlink.Link(\"main\",\n    name=\"my-hosted-link\",\n    pop_id=pop.id,\n    partner_id=partner.id,\n    bandwidth_mbps=50)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pop = Scaleway.Interlink.GetPop.Invoke(new()\n    {\n        Name = \"Telehouse TH2\",\n    });\n\n    var partner = Scaleway.Interlink.GetPartner.Invoke(new()\n    {\n        Name = \"FranceIX\",\n    });\n\n    var main = new Scaleway.Interlink.Link(\"main\", new()\n    {\n        Name = \"my-hosted-link\",\n        PopId = pop.Apply(getPopResult =\u003e getPopResult.Id),\n        PartnerId = partner.Apply(getPartnerResult =\u003e getPartnerResult.Id),\n        BandwidthMbps = 50,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/interlink\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpop, err := interlink.GetPop(ctx, \u0026interlink.GetPopArgs{\n\t\t\tName: pulumi.StringRef(\"Telehouse TH2\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpartner, err := interlink.GetPartner(ctx, \u0026interlink.GetPartnerArgs{\n\t\t\tName: pulumi.StringRef(\"FranceIX\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = interlink.NewLink(ctx, \"main\", \u0026interlink.LinkArgs{\n\t\t\tName:          pulumi.String(\"my-hosted-link\"),\n\t\t\tPopId:         pulumi.String(pulumi.String(pop.Id)),\n\t\t\tPartnerId:     pulumi.String(pulumi.String(partner.Id)),\n\t\t\tBandwidthMbps: pulumi.Int(50),\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.scaleway.interlink.InterlinkFunctions;\nimport com.pulumi.scaleway.interlink.inputs.GetPopArgs;\nimport com.pulumi.scaleway.interlink.inputs.GetPartnerArgs;\nimport com.pulumi.scaleway.interlink.Link;\nimport com.pulumi.scaleway.interlink.LinkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pop = InterlinkFunctions.getPop(GetPopArgs.builder()\n            .name(\"Telehouse TH2\")\n            .build());\n\n        final var partner = InterlinkFunctions.getPartner(GetPartnerArgs.builder()\n            .name(\"FranceIX\")\n            .build());\n\n        var main = new Link(\"main\", LinkArgs.builder()\n            .name(\"my-hosted-link\")\n            .popId(pop.id())\n            .partnerId(partner.id())\n            .bandwidthMbps(50)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:interlink:Link\n    properties:\n      name: my-hosted-link\n      popId: ${pop.id}\n      partnerId: ${partner.id}\n      bandwidthMbps: 50\nvariables:\n  pop:\n    fn::invoke:\n      function: scaleway:interlink:getPop\n      arguments:\n        name: Telehouse TH2\n  partner:\n    fn::invoke:\n      function: scaleway:interlink:getPartner\n      arguments:\n        name: FranceIX\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With VPC\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst pop = scaleway.interlink.getPop({\n    name: \"Telehouse TH2\",\n});\nconst partner = scaleway.interlink.getPartner({\n    name: \"FranceIX\",\n});\nconst vpc = new scaleway.network.Vpc(\"vpc\", {name: \"my-vpc\"});\nconst main = new scaleway.interlink.Link(\"main\", {\n    name: \"my-hosted-link\",\n    popId: pop.then(pop =\u003e pop.id),\n    partnerId: partner.then(partner =\u003e partner.id),\n    bandwidthMbps: 50,\n    vpcId: vpc.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_scaleway as scaleway\nimport pulumiverse_scaleway as scaleway\n\npop = scaleway.interlink.get_pop(name=\"Telehouse TH2\")\npartner = scaleway.interlink.get_partner(name=\"FranceIX\")\nvpc = scaleway.network.Vpc(\"vpc\", name=\"my-vpc\")\nmain = scaleway.interlink.Link(\"main\",\n    name=\"my-hosted-link\",\n    pop_id=pop.id,\n    partner_id=partner.id,\n    bandwidth_mbps=50,\n    vpc_id=vpc.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pop = Scaleway.Interlink.GetPop.Invoke(new()\n    {\n        Name = \"Telehouse TH2\",\n    });\n\n    var partner = Scaleway.Interlink.GetPartner.Invoke(new()\n    {\n        Name = \"FranceIX\",\n    });\n\n    var vpc = new Scaleway.Network.Vpc(\"vpc\", new()\n    {\n        Name = \"my-vpc\",\n    });\n\n    var main = new Scaleway.Interlink.Link(\"main\", new()\n    {\n        Name = \"my-hosted-link\",\n        PopId = pop.Apply(getPopResult =\u003e getPopResult.Id),\n        PartnerId = partner.Apply(getPartnerResult =\u003e getPartnerResult.Id),\n        BandwidthMbps = 50,\n        VpcId = vpc.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/interlink\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/network\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpop, err := interlink.GetPop(ctx, \u0026interlink.GetPopArgs{\n\t\t\tName: pulumi.StringRef(\"Telehouse TH2\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpartner, err := interlink.GetPartner(ctx, \u0026interlink.GetPartnerArgs{\n\t\t\tName: pulumi.StringRef(\"FranceIX\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc, err := network.NewVpc(ctx, \"vpc\", \u0026network.VpcArgs{\n\t\t\tName: pulumi.String(\"my-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = interlink.NewLink(ctx, \"main\", \u0026interlink.LinkArgs{\n\t\t\tName:          pulumi.String(\"my-hosted-link\"),\n\t\t\tPopId:         pulumi.String(pulumi.String(pop.Id)),\n\t\t\tPartnerId:     pulumi.String(pulumi.String(partner.Id)),\n\t\t\tBandwidthMbps: pulumi.Int(50),\n\t\t\tVpcId:         vpc.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.pulumi.scaleway.interlink.InterlinkFunctions;\nimport com.pulumi.scaleway.interlink.inputs.GetPopArgs;\nimport com.pulumi.scaleway.interlink.inputs.GetPartnerArgs;\nimport com.pulumi.scaleway.network.Vpc;\nimport com.pulumi.scaleway.network.VpcArgs;\nimport com.pulumi.scaleway.interlink.Link;\nimport com.pulumi.scaleway.interlink.LinkArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pop = InterlinkFunctions.getPop(GetPopArgs.builder()\n            .name(\"Telehouse TH2\")\n            .build());\n\n        final var partner = InterlinkFunctions.getPartner(GetPartnerArgs.builder()\n            .name(\"FranceIX\")\n            .build());\n\n        var vpc = new Vpc(\"vpc\", VpcArgs.builder()\n            .name(\"my-vpc\")\n            .build());\n\n        var main = new Link(\"main\", LinkArgs.builder()\n            .name(\"my-hosted-link\")\n            .popId(pop.id())\n            .partnerId(partner.id())\n            .bandwidthMbps(50)\n            .vpcId(vpc.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc:\n    type: scaleway:network:Vpc\n    properties:\n      name: my-vpc\n  main:\n    type: scaleway:interlink:Link\n    properties:\n      name: my-hosted-link\n      popId: ${pop.id}\n      partnerId: ${partner.id}\n      bandwidthMbps: 50\n      vpcId: ${vpc.id}\nvariables:\n  pop:\n    fn::invoke:\n      function: scaleway:interlink:getPop\n      arguments:\n        name: Telehouse TH2\n  partner:\n    fn::invoke:\n      function: scaleway:interlink:getPartner\n      arguments:\n        name: FranceIX\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterlink Links can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:interlink/link:Link main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "bandwidthMbps": {
                    "type": "integer",
                    "description": "Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.\n"
                },
                "bgpV4Status": {
                    "type": "string",
                    "description": "Status of the link's BGP IPv4 session.\n"
                },
                "bgpV6Status": {
                    "type": "string",
                    "description": "Status of the link's BGP IPv6 session.\n"
                },
                "connectionId": {
                    "type": "string",
                    "description": "If set, creates a self-hosted link using this dedicated physical connection. Conflicts with \u003cspan pulumi-lang-nodejs=\"`partnerId`\" pulumi-lang-dotnet=\"`PartnerId`\" pulumi-lang-go=\"`partnerId`\" pulumi-lang-python=\"`partner_id`\" pulumi-lang-yaml=\"`partnerId`\" pulumi-lang-java=\"`partnerId`\"\u003e`partnerId`\u003c/span\u003e.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Creation date of the link (RFC 3339 format).\n"
                },
                "enableRoutePropagation": {
                    "type": "boolean",
                    "description": "Defines whether route propagation is enabled or not. 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"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the link. If not provided, a name will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "Organization ID.\n"
                },
                "pairingKey": {
                    "type": "string",
                    "description": "Used to identify a link from a user or partner's point of view.\n",
                    "secret": true
                },
                "partnerId": {
                    "type": "string",
                    "description": "If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with \u003cspan pulumi-lang-nodejs=\"`connectionId`\" pulumi-lang-dotnet=\"`ConnectionId`\" pulumi-lang-go=\"`connectionId`\" pulumi-lang-python=\"`connection_id`\" pulumi-lang-yaml=\"`connectionId`\" pulumi-lang-java=\"`connectionId`\"\u003e`connectionId`\u003c/span\u003e.\n"
                },
                "peerAsn": {
                    "type": "integer",
                    "description": "For self-hosted links, the peer AS Number to establish BGP session. If not given, a default one will be assigned.\n"
                },
                "peerBgpConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:interlink/LinkPeerBgpConfig:LinkPeerBgpConfig"
                    },
                    "description": "BGP configuration on peer's side (on-premises or other hosting provider). Contains \u003cspan pulumi-lang-nodejs=\"`asn`\" pulumi-lang-dotnet=\"`Asn`\" pulumi-lang-go=\"`asn`\" pulumi-lang-python=\"`asn`\" pulumi-lang-yaml=\"`asn`\" pulumi-lang-java=\"`asn`\"\u003e`asn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n"
                },
                "popId": {
                    "type": "string",
                    "description": "PoP (location) where the link will be created.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the link is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the link should be created.\n"
                },
                "routingPolicyV4Id": {
                    "type": "string",
                    "description": "If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.\n"
                },
                "routingPolicyV6Id": {
                    "type": "string",
                    "description": "If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.\n"
                },
                "scwBgpConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/scaleway:interlink/LinkScwBgpConfig:LinkScwBgpConfig"
                    },
                    "description": "BGP configuration on Scaleway's side. Contains \u003cspan pulumi-lang-nodejs=\"`asn`\" pulumi-lang-dotnet=\"`Asn`\" pulumi-lang-go=\"`asn`\" pulumi-lang-python=\"`asn`\" pulumi-lang-yaml=\"`asn`\" pulumi-lang-java=\"`asn`\"\u003e`asn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the link.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to apply to the link.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Last modification date of the link (RFC 3339 format).\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "ID of the Scaleway VPC to attach to the link.\n"
                }
            },
            "required": [
                "bandwidthMbps",
                "bgpV4Status",
                "bgpV6Status",
                "createdAt",
                "name",
                "organizationId",
                "pairingKey",
                "peerAsn",
                "peerBgpConfigs",
                "popId",
                "projectId",
                "routingPolicyV4Id",
                "routingPolicyV6Id",
                "scwBgpConfigs",
                "status",
                "updatedAt",
                "vlan"
            ],
            "inputProperties": {
                "bandwidthMbps": {
                    "type": "integer",
                    "description": "Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.\n",
                    "willReplaceOnChanges": true
                },
                "connectionId": {
                    "type": "string",
                    "description": "If set, creates a self-hosted link using this dedicated physical connection. Conflicts with \u003cspan pulumi-lang-nodejs=\"`partnerId`\" pulumi-lang-dotnet=\"`PartnerId`\" pulumi-lang-go=\"`partnerId`\" pulumi-lang-python=\"`partner_id`\" pulumi-lang-yaml=\"`partnerId`\" pulumi-lang-java=\"`partnerId`\"\u003e`partnerId`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "enableRoutePropagation": {
                    "type": "boolean",
                    "description": "Defines whether route propagation is enabled or not. 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"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the link. If not provided, a name will be randomly generated.\n"
                },
                "partnerId": {
                    "type": "string",
                    "description": "If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with \u003cspan pulumi-lang-nodejs=\"`connectionId`\" pulumi-lang-dotnet=\"`ConnectionId`\" pulumi-lang-go=\"`connectionId`\" pulumi-lang-python=\"`connection_id`\" pulumi-lang-yaml=\"`connectionId`\" pulumi-lang-java=\"`connectionId`\"\u003e`connectionId`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "peerAsn": {
                    "type": "integer",
                    "description": "For self-hosted links, the peer AS Number to establish BGP session. If not given, a default one will be assigned.\n"
                },
                "popId": {
                    "type": "string",
                    "description": "PoP (location) where the link will be created.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the link is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the link should be created.\n",
                    "willReplaceOnChanges": true
                },
                "routingPolicyV4Id": {
                    "type": "string",
                    "description": "If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.\n"
                },
                "routingPolicyV6Id": {
                    "type": "string",
                    "description": "If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to apply to the link.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.\n",
                    "willReplaceOnChanges": true
                },
                "vpcId": {
                    "type": "string",
                    "description": "ID of the Scaleway VPC to attach to the link.\n"
                }
            },
            "requiredInputs": [
                "bandwidthMbps",
                "popId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Link resources.\n",
                "properties": {
                    "bandwidthMbps": {
                        "type": "integer",
                        "description": "Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.\n",
                        "willReplaceOnChanges": true
                    },
                    "bgpV4Status": {
                        "type": "string",
                        "description": "Status of the link's BGP IPv4 session.\n"
                    },
                    "bgpV6Status": {
                        "type": "string",
                        "description": "Status of the link's BGP IPv6 session.\n"
                    },
                    "connectionId": {
                        "type": "string",
                        "description": "If set, creates a self-hosted link using this dedicated physical connection. Conflicts with \u003cspan pulumi-lang-nodejs=\"`partnerId`\" pulumi-lang-dotnet=\"`PartnerId`\" pulumi-lang-go=\"`partnerId`\" pulumi-lang-python=\"`partner_id`\" pulumi-lang-yaml=\"`partnerId`\" pulumi-lang-java=\"`partnerId`\"\u003e`partnerId`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Creation date of the link (RFC 3339 format).\n"
                    },
                    "enableRoutePropagation": {
                        "type": "boolean",
                        "description": "Defines whether route propagation is enabled or not. 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"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the link. If not provided, a name will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "Organization ID.\n"
                    },
                    "pairingKey": {
                        "type": "string",
                        "description": "Used to identify a link from a user or partner's point of view.\n",
                        "secret": true
                    },
                    "partnerId": {
                        "type": "string",
                        "description": "If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with \u003cspan pulumi-lang-nodejs=\"`connectionId`\" pulumi-lang-dotnet=\"`ConnectionId`\" pulumi-lang-go=\"`connectionId`\" pulumi-lang-python=\"`connection_id`\" pulumi-lang-yaml=\"`connectionId`\" pulumi-lang-java=\"`connectionId`\"\u003e`connectionId`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "peerAsn": {
                        "type": "integer",
                        "description": "For self-hosted links, the peer AS Number to establish BGP session. If not given, a default one will be assigned.\n"
                    },
                    "peerBgpConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:interlink/LinkPeerBgpConfig:LinkPeerBgpConfig"
                        },
                        "description": "BGP configuration on peer's side (on-premises or other hosting provider). Contains \u003cspan pulumi-lang-nodejs=\"`asn`\" pulumi-lang-dotnet=\"`Asn`\" pulumi-lang-go=\"`asn`\" pulumi-lang-python=\"`asn`\" pulumi-lang-yaml=\"`asn`\" pulumi-lang-java=\"`asn`\"\u003e`asn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n"
                    },
                    "popId": {
                        "type": "string",
                        "description": "PoP (location) where the link will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the link is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the link should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "routingPolicyV4Id": {
                        "type": "string",
                        "description": "If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.\n"
                    },
                    "routingPolicyV6Id": {
                        "type": "string",
                        "description": "If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.\n"
                    },
                    "scwBgpConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/scaleway:interlink/LinkScwBgpConfig:LinkScwBgpConfig"
                        },
                        "description": "BGP configuration on Scaleway's side. Contains \u003cspan pulumi-lang-nodejs=\"`asn`\" pulumi-lang-dotnet=\"`Asn`\" pulumi-lang-go=\"`asn`\" pulumi-lang-python=\"`asn`\" pulumi-lang-yaml=\"`asn`\" pulumi-lang-java=\"`asn`\"\u003e`asn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Status of the link.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of tags to apply to the link.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Last modification date of the link (RFC 3339 format).\n"
                    },
                    "vlan": {
                        "type": "integer",
                        "description": "For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.\n",
                        "willReplaceOnChanges": true
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "ID of the Scaleway VPC to attach to the link.\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:interlink/routingPolicy:RoutingPolicy": {
            "description": "Creates and manages Scaleway Interlink Routing Policies.\n\nA routing policy defines IP prefix filters that control which routes are accepted from and advertised to a peer via BGP on an Interlink connection. All routes across a link are blocked by default, so you must attach a routing policy to enable traffic flow.\n\n\nFor more information, see [the Interlink documentation](https://www.scaleway.com/en/docs/network/interlink/) and [API documentation](https://www.scaleway.com/en/developers/api/interlink/).\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.interlink.RoutingPolicy(\"main\", {\n    name: \"my-routing-policy\",\n    prefixFilterIns: [\"10.0.2.0/24\"],\n    prefixFilterOuts: [\"10.0.1.0/24\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.interlink.RoutingPolicy(\"main\",\n    name=\"my-routing-policy\",\n    prefix_filter_ins=[\"10.0.2.0/24\"],\n    prefix_filter_outs=[\"10.0.1.0/24\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Interlink.RoutingPolicy(\"main\", new()\n    {\n        Name = \"my-routing-policy\",\n        PrefixFilterIns = new[]\n        {\n            \"10.0.2.0/24\",\n        },\n        PrefixFilterOuts = new[]\n        {\n            \"10.0.1.0/24\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/interlink\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := interlink.NewRoutingPolicy(ctx, \"main\", \u0026interlink.RoutingPolicyArgs{\n\t\t\tName: pulumi.String(\"my-routing-policy\"),\n\t\t\tPrefixFilterIns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tPrefixFilterOuts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\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.scaleway.interlink.RoutingPolicy;\nimport com.pulumi.scaleway.interlink.RoutingPolicyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new RoutingPolicy(\"main\", RoutingPolicyArgs.builder()\n            .name(\"my-routing-policy\")\n            .prefixFilterIns(\"10.0.2.0/24\")\n            .prefixFilterOuts(\"10.0.1.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:interlink:RoutingPolicy\n    properties:\n      name: my-routing-policy\n      prefixFilterIns:\n        - 10.0.2.0/24\n      prefixFilterOuts:\n        - 10.0.1.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.interlink.RoutingPolicy(\"main\", {\n    name: \"my-routing-policy-v6\",\n    isIpv6: true,\n    prefixFilterIns: [\"2001:db8:1::/48\"],\n    prefixFilterOuts: [\"2001:db8:2::/48\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.interlink.RoutingPolicy(\"main\",\n    name=\"my-routing-policy-v6\",\n    is_ipv6=True,\n    prefix_filter_ins=[\"2001:db8:1::/48\"],\n    prefix_filter_outs=[\"2001:db8:2::/48\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Interlink.RoutingPolicy(\"main\", new()\n    {\n        Name = \"my-routing-policy-v6\",\n        IsIpv6 = true,\n        PrefixFilterIns = new[]\n        {\n            \"2001:db8:1::/48\",\n        },\n        PrefixFilterOuts = new[]\n        {\n            \"2001:db8:2::/48\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/interlink\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := interlink.NewRoutingPolicy(ctx, \"main\", \u0026interlink.RoutingPolicyArgs{\n\t\t\tName:   pulumi.String(\"my-routing-policy-v6\"),\n\t\t\tIsIpv6: pulumi.Bool(true),\n\t\t\tPrefixFilterIns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2001:db8:1::/48\"),\n\t\t\t},\n\t\t\tPrefixFilterOuts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2001:db8:2::/48\"),\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.scaleway.interlink.RoutingPolicy;\nimport com.pulumi.scaleway.interlink.RoutingPolicyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new RoutingPolicy(\"main\", RoutingPolicyArgs.builder()\n            .name(\"my-routing-policy-v6\")\n            .isIpv6(true)\n            .prefixFilterIns(\"2001:db8:1::/48\")\n            .prefixFilterOuts(\"2001:db8:2::/48\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:interlink:RoutingPolicy\n    properties:\n      name: my-routing-policy-v6\n      isIpv6: true\n      prefixFilterIns:\n        - 2001:db8:1::/48\n      prefixFilterOuts:\n        - 2001:db8:2::/48\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.interlink.RoutingPolicy(\"main\", {\n    name: \"my-routing-policy\",\n    prefixFilterIns: [\n        \"10.0.2.0/24\",\n        \"10.0.3.0/24\",\n    ],\n    prefixFilterOuts: [\n        \"10.0.1.0/24\",\n        \"172.16.0.0/16\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.interlink.RoutingPolicy(\"main\",\n    name=\"my-routing-policy\",\n    prefix_filter_ins=[\n        \"10.0.2.0/24\",\n        \"10.0.3.0/24\",\n    ],\n    prefix_filter_outs=[\n        \"10.0.1.0/24\",\n        \"172.16.0.0/16\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Interlink.RoutingPolicy(\"main\", new()\n    {\n        Name = \"my-routing-policy\",\n        PrefixFilterIns = new[]\n        {\n            \"10.0.2.0/24\",\n            \"10.0.3.0/24\",\n        },\n        PrefixFilterOuts = new[]\n        {\n            \"10.0.1.0/24\",\n            \"172.16.0.0/16\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/interlink\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := interlink.NewRoutingPolicy(ctx, \"main\", \u0026interlink.RoutingPolicyArgs{\n\t\t\tName: pulumi.String(\"my-routing-policy\"),\n\t\t\tPrefixFilterIns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t\tpulumi.String(\"10.0.3.0/24\"),\n\t\t\t},\n\t\t\tPrefixFilterOuts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t\tpulumi.String(\"172.16.0.0/16\"),\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.scaleway.interlink.RoutingPolicy;\nimport com.pulumi.scaleway.interlink.RoutingPolicyArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new RoutingPolicy(\"main\", RoutingPolicyArgs.builder()\n            .name(\"my-routing-policy\")\n            .prefixFilterIns(            \n                \"10.0.2.0/24\",\n                \"10.0.3.0/24\")\n            .prefixFilterOuts(            \n                \"10.0.1.0/24\",\n                \"172.16.0.0/16\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:interlink:RoutingPolicy\n    properties:\n      name: my-routing-policy\n      prefixFilterIns:\n        - 10.0.2.0/24\n        - 10.0.3.0/24\n      prefixFilterOuts:\n        - 10.0.1.0/24\n        - 172.16.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterlink Routing Policies can be imported using `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:interlink/routingPolicy:RoutingPolicy main fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of the creation of the routing policy (RFC 3339 format).\n"
                },
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the routing policy uses IPv6 prefixes. 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 (IPv4).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the routing policy. If not provided, a name will be randomly generated.\n"
                },
                "organizationId": {
                    "type": "string",
                    "description": "The Organization ID the routing policy is associated with.\n"
                },
                "prefixFilterIns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP prefixes (in CIDR notation) to accept from the peer. These are the ranges of route announcements to accept.\n"
                },
                "prefixFilterOuts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP prefixes (in CIDR notation) to advertise to the peer. These are the ranges of routes to advertise.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the routing policy is associated with.\n"
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the routing policy should be created.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags to apply to the routing policy.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of the last update of the routing policy (RFC 3339 format).\n"
                }
            },
            "required": [
                "createdAt",
                "isIpv6",
                "name",
                "organizationId",
                "projectId",
                "updatedAt"
            ],
            "inputProperties": {
                "isIpv6": {
                    "type": "boolean",
                    "description": "Defines whether the routing policy uses IPv6 prefixes. 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 (IPv4).\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the routing policy. If not provided, a name will be randomly generated.\n"
                },
                "prefixFilterIns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP prefixes (in CIDR notation) to accept from the peer. These are the ranges of route announcements to accept.\n"
                },
                "prefixFilterOuts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IP prefixes (in CIDR notation) to advertise to the peer. These are the ranges of routes to advertise.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the routing policy is associated with.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "\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) The region in which the routing policy should be created.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of tags to apply to the routing policy.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering RoutingPolicy resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of the creation of the routing policy (RFC 3339 format).\n"
                    },
                    "isIpv6": {
                        "type": "boolean",
                        "description": "Defines whether the routing policy uses IPv6 prefixes. 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 (IPv4).\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the routing policy. If not provided, a name will be randomly generated.\n"
                    },
                    "organizationId": {
                        "type": "string",
                        "description": "The Organization ID the routing policy is associated with.\n"
                    },
                    "prefixFilterIns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IP prefixes (in CIDR notation) to accept from the peer. These are the ranges of route announcements to accept.\n"
                    },
                    "prefixFilterOuts": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of IP prefixes (in CIDR notation) to advertise to the peer. These are the ranges of routes to advertise.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`projectId`\u003c/span\u003e) The ID of the project the routing policy is associated with.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "\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) The region in which the routing policy should be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of tags to apply to the routing policy.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of the last update of the routing policy (RFC 3339 format).\n"
                    }
                },
                "type": "object"
            }
        },
        "scaleway:iot/device:Device": {
            "description": "\u003e **Note:** This terraform resource is currently in beta and might include breaking change in future releases.\n\nCreates and manages Scaleway IoT Hub Instances. For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iot/).\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as scaleway from \"@pulumiverse/scaleway\";\n\nconst main = new scaleway.iot.Hub(\"main\", {\n    name: \"test-iot\",\n    productPlan: \"plan_shared\",\n});\nconst mainDevice = new scaleway.iot.Device(\"main\", {\n    hubId: main.id,\n    name: \"test-iot\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_scaleway as scaleway\n\nmain = scaleway.iot.Hub(\"main\",\n    name=\"test-iot\",\n    product_plan=\"plan_shared\")\nmain_device = scaleway.iot.Device(\"main\",\n    hub_id=main.id,\n    name=\"test-iot\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Scaleway = Pulumiverse.Scaleway;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new Scaleway.Iot.Hub(\"main\", new()\n    {\n        Name = \"test-iot\",\n        ProductPlan = \"plan_shared\",\n    });\n\n    var mainDevice = new Scaleway.Iot.Device(\"main\", new()\n    {\n        HubId = main.Id,\n        Name = \"test-iot\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-scaleway/sdk/go/scaleway/iot\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := iot.NewHub(ctx, \"main\", \u0026iot.HubArgs{\n\t\t\tName:        pulumi.String(\"test-iot\"),\n\t\t\tProductPlan: pulumi.String(\"plan_shared\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iot.NewDevice(ctx, \"main\", \u0026iot.DeviceArgs{\n\t\t\tHubId: main.ID(),\n\t\t\tName:  pulumi.String(\"test-iot\"),\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.scaleway.iot.Hub;\nimport com.pulumi.scaleway.iot.HubArgs;\nimport com.pulumi.scaleway.iot.Device;\nimport com.pulumi.scaleway.iot.DeviceArgs;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 main = new Hub(\"main\", HubArgs.builder()\n            .name(\"test-iot\")\n            .productPlan(\"plan_shared\")\n            .build());\n\n        var mainDevice = new Device(\"mainDevice\", DeviceArgs.builder()\n            .hubId(main.id())\n            .name(\"test-iot\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: scaleway:iot:Hub\n    properties:\n      name: test-iot\n      productPlan: plan_shared\n  mainDevice:\n    type: scaleway:iot:Device\n    name: main\n    properties:\n      hubId: ${main.id}\n      name: test-iot\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIoT devices can be imported using the `{region}/{id}`, e.g.\n\n```sh\n$ pulumi import scaleway:iot/device:Device device01 fr-par/11111111-1111-1111-1111-111111111111\n```\n\n",
            "properties": {
                "allowInsecure": {
                    "type": "boolean",
                    "description": "Allow plain and server-authenticated TLS connections in addition to mutually-authenticated ones.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowInsecure`\" pulumi-lang-dotnet=\"`AllowInsecure`\" pulumi-lang-go=\"`allowInsecure`\" pulumi-lang-python=\"`allow_insecure`\" pulumi-lang-yaml=\"`allowInsecure`\" pulumi-lang-java=\"`allowInsecure`\"\u003e`allowInsecure`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "allowMultipleConnections": {
                    "type": "boolean",
                    "description": "Allow more than one simultaneous connection using the same device credentials.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowMultipleConnections`\" pulumi-lang-dotnet=\"`AllowMultipleConnections`\" pulumi-lang-go=\"`allowMultipleConnections`\" pulumi-lang-python=\"`allow_multiple_connections`\" pulumi-lang-yaml=\"`allowMultipleConnections`\" pulumi-lang-java=\"`allowMultipleConnections`\"\u003e`allowMultipleConnections`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "certificate": {
                    "$ref": "#/types/scaleway:iot/DeviceCertificate:DeviceCertificate",
                    "description": "The certificate bundle of the device.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the device was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the IoT device (e.g. `living room`).\n"
                },
                "hubId": {
                    "type": "string",
                    "description": "The ID of the hub on which this device will be created.\n"
                },
                "isConnected": {
                    "type": "boolean",
                    "description": "The current connection status of the device.\n"
                },
                "lastActivityAt": {
                    "type": "string",
                    "description": "The last MQTT activity of the device.\n"
                },
                "messageFilters": {
                    "$ref": "#/types/scaleway:iot/DeviceMessageFilters:DeviceMessageFilters",
                    "description": "Rules that define which messages are authorized or denied based on their topic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the IoT device you want to create (e.g. `my-device`).\n\n\u003e **Important:** Updates to \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 destroy and recreate a new resource.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to attach the resource to"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the device.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time the device resource was updated.\n"
                }
            },
            "required": [
                "certificate",
                "createdAt",
                "hubId",
                "isConnected",
                "lastActivityAt",
                "name",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "allowInsecure": {
                    "type": "boolean",
                    "description": "Allow plain and server-authenticated TLS connections in addition to mutually-authenticated ones.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowInsecure`\" pulumi-lang-dotnet=\"`AllowInsecure`\" pulumi-lang-go=\"`allowInsecure`\" pulumi-lang-python=\"`allow_insecure`\" pulumi-lang-yaml=\"`allowInsecure`\" pulumi-lang-java=\"`allowInsecure`\"\u003e`allowInsecure`\u003c/span\u003e can disconnect eventually connected devices.\n"
                },
                "allowMultipleConnections": {
                    "type": "boolean",
                    "description": "Allow more than one simultaneous connection using the same device credentials.\n\n\u003e **Important:** Updates to \u003cspan pulumi-lang-nodejs=\"`allowMultipleConnections`\" pulumi-lang-dotnet=\"`AllowMultipleConnections`\" pulumi-lang-go=\"`allowMultipleConnections`\" p