{
  "name": "exoscale",
  "displayName": "Exoscale",
  "version": "0.66.1",
  "description": "A Pulumi package for creating and managing exoscale cloud resources.",
  "keywords": [
    "pulumi",
    "exoscale",
    "category/cloud"
  ],
  "homepage": "https://www.pulumi.com",
  "license": "Apache-2.0",
  "attribution": "This Pulumi package is based on the [`exoscale` Terraform Provider](https://github.com/exoscale/terraform-provider-exoscale).",
  "repository": "https://github.com/pulumiverse/pulumi-exoscale",
  "pluginDownloadURL": "github://api.github.com/pulumiverse/pulumi-exoscale",
  "publisher": "Pulumiverse",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "packageReferences": {
        "Pulumi": "3.*"
      },
      "compatibility": "tfbridge20",
      "rootNamespace": "Pulumiverse"
    },
    "go": {
      "importBasePath": "github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale",
      "generateResourceContainerTypes": true,
      "generateExtraInputTypes": true
    },
    "java": {
      "basePackage": "com.pulumiverse",
      "buildFiles": "",
      "gradleNexusPublishPluginVersion": "",
      "gradleTest": ""
    },
    "nodejs": {
      "packageName": "@pulumiverse/exoscale",
      "packageDescription": "A Pulumi package for creating and managing exoscale cloud resources.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/exoscale/terraform-provider-exoscale)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-exoscale` repo](https://github.com/pulumiverse/pulumi-exoscale/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-exoscale` repo](https://github.com/exoscale/terraform-provider-exoscale/issues).",
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0"
      },
      "devDependencies": {
        "@types/mime": "^2.0.0",
        "@types/node": "^10.0.0"
      },
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true
    },
    "python": {
      "packageName": "pulumiverse_exoscale",
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0"
      },
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/exoscale/terraform-provider-exoscale)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-exoscale` repo](https://github.com/pulumiverse/pulumi-exoscale/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-exoscale` repo](https://github.com/exoscale/terraform-provider-exoscale/issues).",
      "compatibility": "tfbridge20",
      "pyproject": {}
    }
  },
  "config": {
    "variables": {
      "delay": {
        "type": "integer",
        "deprecationMessage": "Does nothing"
      },
      "environment": {
        "type": "string"
      },
      "key": {
        "type": "string",
        "description": "Exoscale API key",
        "defaultInfo": {
          "environment": [
            "EXOSCALE_API_KEY"
          ]
        },
        "secret": true
      },
      "secret": {
        "type": "string",
        "description": "Exoscale API secret",
        "defaultInfo": {
          "environment": [
            "EXOSCALE_API_SECRET"
          ]
        },
        "secret": true
      },
      "sosEndpoint": {
        "type": "string"
      },
      "timeout": {
        "type": "integer",
        "description": "Timeout in seconds for waiting on compute resources to become available (by default: 3600)"
      }
    }
  },
  "types": {
    "exoscale:index/BlockStorageVolumeSnapshotTarget:BlockStorageVolumeSnapshotTarget": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Snapshot ID.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/BlockStorageVolumeSnapshotTimeouts:BlockStorageVolumeSnapshotTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/BlockStorageVolumeSnapshotVolume:BlockStorageVolumeSnapshotVolume": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Snapshot ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "exoscale:index/BlockStorageVolumeTimeouts:BlockStorageVolumeTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/ComputeInstanceNetworkInterface:ComputeInstanceNetworkInterface": {
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The IPv4 address to request as static DHCP lease if the network interface is attached to a *managed* private network.\n"
        },
        "macAddress": {
          "type": "string",
          "description": "MAC address\n"
        },
        "networkId": {
          "type": "string",
          "description": "The exoscale*private*network (ID) to attach to the instance.\n"
        }
      },
      "type": "object",
      "required": [
        "networkId"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipAddress",
            "macAddress",
            "networkId"
          ]
        }
      }
    },
    "exoscale:index/DatabaseGrafana:DatabaseGrafana": {
      "properties": {
        "grafanaSettings": {
          "type": "string",
          "description": "Grafana configuration settings in JSON format (`exo dbaas type show grafana --settings=grafana` for reference).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "grafanaSettings",
            "ipFilters"
          ]
        }
      }
    },
    "exoscale:index/DatabaseKafka:DatabaseKafka": {
      "properties": {
        "enableCertAuth": {
          "type": "boolean",
          "description": "Enable certificate-based authentication method.\n"
        },
        "enableKafkaConnect": {
          "type": "boolean",
          "description": "Enable Kafka Connect.\n"
        },
        "enableKafkaRest": {
          "type": "boolean",
          "description": "Enable Kafka REST.\n"
        },
        "enableSaslAuth": {
          "type": "boolean",
          "description": "Enable SASL-based authentication method.\n"
        },
        "enableSchemaRegistry": {
          "type": "boolean",
          "description": "Enable Schema Registry.\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "kafkaConnectSettings": {
          "type": "string",
          "description": "Kafka Connect configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka-connect` for reference).\n"
        },
        "kafkaRestSettings": {
          "type": "string",
          "description": "Kafka REST configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka-rest` for reference).\n"
        },
        "kafkaSettings": {
          "type": "string",
          "description": "Kafka configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka` for reference).\n"
        },
        "schemaRegistrySettings": {
          "type": "string",
          "description": "Schema Registry configuration settings in JSON format (`exo dbaas type show kafka --settings=schema-registry` for reference)\n"
        },
        "version": {
          "type": "string",
          "description": "Kafka major version (`exo dbaas type show kafka` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "enableCertAuth",
            "enableKafkaConnect",
            "enableKafkaRest",
            "enableSaslAuth",
            "enableSchemaRegistry",
            "ipFilters",
            "kafkaConnectSettings",
            "kafkaRestSettings",
            "kafkaSettings",
            "schemaRegistrySettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DatabaseMysql:DatabaseMysql": {
      "properties": {
        "adminPassword": {
          "type": "string",
          "description": "A custom administrator account password (may only be set at creation time).\n",
          "secret": true
        },
        "adminUsername": {
          "type": "string",
          "description": "A custom administrator account username (may only be set at creation time).\n"
        },
        "backupSchedule": {
          "type": "string",
          "description": "The automated backup schedule (`HH:MM`).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "mysqlSettings": {
          "type": "string",
          "description": "MySQL configuration settings in JSON format (`exo dbaas type show mysql --settings=mysql` for reference).\n"
        },
        "version": {
          "type": "string",
          "description": "MySQL major version (`exo dbaas type show mysql` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "backupSchedule",
            "ipFilters",
            "mysqlSettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DatabaseOpensearch:DatabaseOpensearch": {
      "properties": {
        "dashboards": {
          "$ref": "#/types/exoscale:index%2FDatabaseOpensearchDashboards:DatabaseOpensearchDashboards",
          "description": "OpenSearch Dashboards settings\n"
        },
        "forkFromService": {
          "type": "string",
          "description": "❗ Service name\n"
        },
        "indexPatterns": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FDatabaseOpensearchIndexPattern:DatabaseOpensearchIndexPattern"
          },
          "description": "(can be used multiple times) Allows you to create glob style patterns and set a max number of indexes matching this pattern you want to keep. Creating indexes exceeding this value will cause the oldest one to get deleted. You could for example create a pattern looking like 'logs.?' and then create index logs.1, logs.2 etc, it will delete logs.1 once you create logs.6. Do note 'logs.?' does not apply to logs.10. Note: Setting max*index*count to 0 will do nothing and the pattern gets ignored.\n"
        },
        "indexTemplate": {
          "$ref": "#/types/exoscale:index%2FDatabaseOpensearchIndexTemplate:DatabaseOpensearchIndexTemplate",
          "description": "Template settings for all new indexes\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allow incoming connections from this list of CIDR address block, e.g. `[\"10.20.0.0/16\"]\n"
        },
        "keepIndexRefreshInterval": {
          "type": "boolean",
          "description": "Aiven automation resets index.refresh_interval to default value for every index to be sure that indices are always visible to search. If it doesn't fit your case, you can disable this by setting up this flag to true.\n"
        },
        "maxIndexCount": {
          "type": "integer",
          "description": "Maximum number of indexes to keep (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>)\n",
          "deprecationMessage": "This attribute is deprecated and is ignored"
        },
        "recoveryBackupName": {
          "type": "string",
          "description": "❗ Name of a backup to recover from\n"
        },
        "settings": {
          "type": "string",
          "description": "OpenSearch-specific settings, in json. e.g.`jsonencode({thread_pool_search_size: 64})`. Use `exo x get-dbaas-settings-opensearch` to get a list of available settings.\n"
        },
        "version": {
          "type": "string",
          "description": "❗ OpenSearch major version (`exo dbaas type show opensearch` for reference)\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipFilters",
            "settings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DatabaseOpensearchDashboards:DatabaseOpensearchDashboards": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable or disable OpenSearch Dashboards (default: true).\n"
        },
        "maxOldSpaceSize": {
          "type": "integer",
          "description": "Limits the maximum amount of memory (in MiB) the OpenSearch Dashboards process can use. This sets the max*old*space_size option of the nodejs running the OpenSearch Dashboards. Note: the memory reserved by OpenSearch Dashboards is not available for OpenSearch. (default: 128).\n"
        },
        "requestTimeout": {
          "type": "integer",
          "description": "Timeout in milliseconds for requests made by OpenSearch Dashboards towards OpenSearch (default: 30000)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DatabaseOpensearchIndexPattern:DatabaseOpensearchIndexPattern": {
      "properties": {
        "maxIndexCount": {
          "type": "integer",
          "description": "Maximum number of indexes to keep before deleting the oldest one (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>)\n"
        },
        "pattern": {
          "type": "string",
          "description": "fnmatch pattern\n"
        },
        "sortingAlgorithm": {
          "type": "string",
          "description": "<span pulumi-lang-nodejs=\"`alphabetical`\" pulumi-lang-dotnet=\"`Alphabetical`\" pulumi-lang-go=\"`alphabetical`\" pulumi-lang-python=\"`alphabetical`\" pulumi-lang-yaml=\"`alphabetical`\" pulumi-lang-java=\"`alphabetical`\">`alphabetical`</span> or <span pulumi-lang-nodejs=\"`creationDate`\" pulumi-lang-dotnet=\"`CreationDate`\" pulumi-lang-go=\"`creationDate`\" pulumi-lang-python=\"`creation_date`\" pulumi-lang-yaml=\"`creationDate`\" pulumi-lang-java=\"`creationDate`\">`creation_date`</span>.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DatabaseOpensearchIndexTemplate:DatabaseOpensearchIndexTemplate": {
      "properties": {
        "mappingNestedObjectsLimit": {
          "type": "integer",
          "description": "The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps to prevent out of memory errors when a document contains too many nested objects. (Default is 10000. Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>, maximum value is <span pulumi-lang-nodejs=\"`100000`\" pulumi-lang-dotnet=\"`100000`\" pulumi-lang-go=\"`100000`\" pulumi-lang-python=\"`100000`\" pulumi-lang-yaml=\"`100000`\" pulumi-lang-java=\"`100000`\">`100000`</span>.)\n"
        },
        "numberOfReplicas": {
          "type": "integer",
          "description": "The number of replicas each primary shard has. (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>, maximum value is <span pulumi-lang-nodejs=\"`29`\" pulumi-lang-dotnet=\"`29`\" pulumi-lang-go=\"`29`\" pulumi-lang-python=\"`29`\" pulumi-lang-yaml=\"`29`\" pulumi-lang-java=\"`29`\">`29`</span>)\n"
        },
        "numberOfShards": {
          "type": "integer",
          "description": "The number of primary shards that an index should have. (Minimum value is <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, maximum value is <span pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\">`1024`</span>.)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DatabasePg:DatabasePg": {
      "properties": {
        "adminPassword": {
          "type": "string",
          "description": "A custom administrator account password (may only be set at creation time).\n",
          "secret": true
        },
        "adminUsername": {
          "type": "string",
          "description": "A custom administrator account username (may only be set at creation time).\n"
        },
        "backupSchedule": {
          "type": "string",
          "description": "The automated backup schedule (`HH:MM`).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "pgSettings": {
          "type": "string",
          "description": "PostgreSQL configuration settings in JSON format (`exo dbaas type show pg --settings=pg` for reference).\n"
        },
        "pgbouncerSettings": {
          "type": "string",
          "description": "PgBouncer configuration settings in JSON format (`exo dbaas type show pg --settings=pgbouncer` for reference).\n"
        },
        "pglookoutSettings": {
          "type": "string",
          "description": "pglookout configuration settings in JSON format (`exo dbaas type show pg --settings=pglookout` for reference).\n"
        },
        "version": {
          "type": "string",
          "description": "PostgreSQL major version (`exo dbaas type show pg` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "backupSchedule",
            "ipFilters",
            "pgSettings",
            "pgbouncerSettings",
            "pglookoutSettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DatabaseTimeouts:DatabaseTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DatabaseValkey:DatabaseValkey": {
      "properties": {
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "valkeySettings": {
          "type": "string",
          "description": "Valkey configuration settings in JSON format (`exo dbaas type show valkey --settings=valkey` for reference).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipFilters",
            "valkeySettings"
          ]
        }
      }
    },
    "exoscale:index/DbaasGrafana:DbaasGrafana": {
      "properties": {
        "grafanaSettings": {
          "type": "string",
          "description": "Grafana configuration settings in JSON format (`exo dbaas type show grafana --settings=grafana` for reference).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "grafanaSettings",
            "ipFilters"
          ]
        }
      }
    },
    "exoscale:index/DbaasKafka:DbaasKafka": {
      "properties": {
        "enableCertAuth": {
          "type": "boolean",
          "description": "Enable certificate-based authentication method.\n"
        },
        "enableKafkaConnect": {
          "type": "boolean",
          "description": "Enable Kafka Connect.\n"
        },
        "enableKafkaRest": {
          "type": "boolean",
          "description": "Enable Kafka REST.\n"
        },
        "enableSaslAuth": {
          "type": "boolean",
          "description": "Enable SASL-based authentication method.\n"
        },
        "enableSchemaRegistry": {
          "type": "boolean",
          "description": "Enable Schema Registry.\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "kafkaConnectSettings": {
          "type": "string",
          "description": "Kafka Connect configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka-connect` for reference).\n"
        },
        "kafkaRestSettings": {
          "type": "string",
          "description": "Kafka REST configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka-rest` for reference).\n"
        },
        "kafkaSettings": {
          "type": "string",
          "description": "Kafka configuration settings in JSON format (`exo dbaas type show kafka --settings=kafka` for reference).\n"
        },
        "schemaRegistrySettings": {
          "type": "string",
          "description": "Schema Registry configuration settings in JSON format (`exo dbaas type show kafka --settings=schema-registry` for reference)\n"
        },
        "version": {
          "type": "string",
          "description": "Kafka major version (`exo dbaas type show kafka` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "enableCertAuth",
            "enableKafkaConnect",
            "enableKafkaRest",
            "enableSaslAuth",
            "enableSchemaRegistry",
            "ipFilters",
            "kafkaConnectSettings",
            "kafkaRestSettings",
            "kafkaSettings",
            "schemaRegistrySettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DbaasKafkaUserTimeouts:DbaasKafkaUserTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasMysql:DbaasMysql": {
      "properties": {
        "adminPassword": {
          "type": "string",
          "description": "A custom administrator account password (may only be set at creation time).\n",
          "secret": true
        },
        "adminUsername": {
          "type": "string",
          "description": "A custom administrator account username (may only be set at creation time).\n"
        },
        "backupSchedule": {
          "type": "string",
          "description": "The automated backup schedule (`HH:MM`).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "mysqlSettings": {
          "type": "string",
          "description": "MySQL configuration settings in JSON format (`exo dbaas type show mysql --settings=mysql` for reference).\n"
        },
        "version": {
          "type": "string",
          "description": "MySQL major version (`exo dbaas type show mysql` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "backupSchedule",
            "ipFilters",
            "mysqlSettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DbaasMysqlDatabaseTimeouts:DbaasMysqlDatabaseTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasMysqlUserTimeouts:DbaasMysqlUserTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasOpensearch:DbaasOpensearch": {
      "properties": {
        "dashboards": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearchDashboards:DbaasOpensearchDashboards",
          "description": "OpenSearch Dashboards settings\n"
        },
        "forkFromService": {
          "type": "string",
          "description": "❗ Service name\n"
        },
        "indexPatterns": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FDbaasOpensearchIndexPattern:DbaasOpensearchIndexPattern"
          },
          "description": "(can be used multiple times) Allows you to create glob style patterns and set a max number of indexes matching this pattern you want to keep. Creating indexes exceeding this value will cause the oldest one to get deleted. You could for example create a pattern looking like 'logs.?' and then create index logs.1, logs.2 etc, it will delete logs.1 once you create logs.6. Do note 'logs.?' does not apply to logs.10. Note: Setting max*index*count to 0 will do nothing and the pattern gets ignored.\n"
        },
        "indexTemplate": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearchIndexTemplate:DbaasOpensearchIndexTemplate",
          "description": "Template settings for all new indexes\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Allow incoming connections from this list of CIDR address block, e.g. `[\"10.20.0.0/16\"]\n"
        },
        "keepIndexRefreshInterval": {
          "type": "boolean",
          "description": "Aiven automation resets index.refresh_interval to default value for every index to be sure that indices are always visible to search. If it doesn't fit your case, you can disable this by setting up this flag to true.\n"
        },
        "maxIndexCount": {
          "type": "integer",
          "description": "Maximum number of indexes to keep (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>)\n",
          "deprecationMessage": "This attribute is deprecated and is ignored"
        },
        "recoveryBackupName": {
          "type": "string",
          "description": "❗ Name of a backup to recover from\n"
        },
        "settings": {
          "type": "string",
          "description": "OpenSearch-specific settings, in json. e.g.`jsonencode({thread_pool_search_size: 64})`. Use `exo x get-dbaas-settings-opensearch` to get a list of available settings.\n"
        },
        "version": {
          "type": "string",
          "description": "❗ OpenSearch major version (`exo dbaas type show opensearch` for reference)\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipFilters",
            "settings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DbaasOpensearchDashboards:DbaasOpensearchDashboards": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable or disable OpenSearch Dashboards (default: true).\n"
        },
        "maxOldSpaceSize": {
          "type": "integer",
          "description": "Limits the maximum amount of memory (in MiB) the OpenSearch Dashboards process can use. This sets the max*old*space_size option of the nodejs running the OpenSearch Dashboards. Note: the memory reserved by OpenSearch Dashboards is not available for OpenSearch. (default: 128).\n"
        },
        "requestTimeout": {
          "type": "integer",
          "description": "Timeout in milliseconds for requests made by OpenSearch Dashboards towards OpenSearch (default: 30000)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasOpensearchIndexPattern:DbaasOpensearchIndexPattern": {
      "properties": {
        "maxIndexCount": {
          "type": "integer",
          "description": "Maximum number of indexes to keep before deleting the oldest one (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>)\n"
        },
        "pattern": {
          "type": "string",
          "description": "fnmatch pattern\n"
        },
        "sortingAlgorithm": {
          "type": "string",
          "description": "<span pulumi-lang-nodejs=\"`alphabetical`\" pulumi-lang-dotnet=\"`Alphabetical`\" pulumi-lang-go=\"`alphabetical`\" pulumi-lang-python=\"`alphabetical`\" pulumi-lang-yaml=\"`alphabetical`\" pulumi-lang-java=\"`alphabetical`\">`alphabetical`</span> or <span pulumi-lang-nodejs=\"`creationDate`\" pulumi-lang-dotnet=\"`CreationDate`\" pulumi-lang-go=\"`creationDate`\" pulumi-lang-python=\"`creation_date`\" pulumi-lang-yaml=\"`creationDate`\" pulumi-lang-java=\"`creationDate`\">`creation_date`</span>.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasOpensearchIndexTemplate:DbaasOpensearchIndexTemplate": {
      "properties": {
        "mappingNestedObjectsLimit": {
          "type": "integer",
          "description": "The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps to prevent out of memory errors when a document contains too many nested objects. (Default is 10000. Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>, maximum value is <span pulumi-lang-nodejs=\"`100000`\" pulumi-lang-dotnet=\"`100000`\" pulumi-lang-go=\"`100000`\" pulumi-lang-python=\"`100000`\" pulumi-lang-yaml=\"`100000`\" pulumi-lang-java=\"`100000`\">`100000`</span>.)\n"
        },
        "numberOfReplicas": {
          "type": "integer",
          "description": "The number of replicas each primary shard has. (Minimum value is <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>, maximum value is <span pulumi-lang-nodejs=\"`29`\" pulumi-lang-dotnet=\"`29`\" pulumi-lang-go=\"`29`\" pulumi-lang-python=\"`29`\" pulumi-lang-yaml=\"`29`\" pulumi-lang-java=\"`29`\">`29`</span>)\n"
        },
        "numberOfShards": {
          "type": "integer",
          "description": "The number of primary shards that an index should have. (Minimum value is <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, maximum value is <span pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\">`1024`</span>.)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasOpensearchUserTimeouts:DbaasOpensearchUserTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasPg:DbaasPg": {
      "properties": {
        "adminPassword": {
          "type": "string",
          "description": "A custom administrator account password (may only be set at creation time).\n",
          "secret": true
        },
        "adminUsername": {
          "type": "string",
          "description": "A custom administrator account username (may only be set at creation time).\n"
        },
        "backupSchedule": {
          "type": "string",
          "description": "The automated backup schedule (`HH:MM`).\n"
        },
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "pgSettings": {
          "type": "string",
          "description": "PostgreSQL configuration settings in JSON format (`exo dbaas type show pg --settings=pg` for reference).\n"
        },
        "pgbouncerSettings": {
          "type": "string",
          "description": "PgBouncer configuration settings in JSON format (`exo dbaas type show pg --settings=pgbouncer` for reference).\n"
        },
        "pglookoutSettings": {
          "type": "string",
          "description": "pglookout configuration settings in JSON format (`exo dbaas type show pg --settings=pglookout` for reference).\n"
        },
        "version": {
          "type": "string",
          "description": "PostgreSQL major version (`exo dbaas type show pg` for reference; may only be set at creation time).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "backupSchedule",
            "ipFilters",
            "pgSettings",
            "pgbouncerSettings",
            "pglookoutSettings",
            "version"
          ]
        }
      }
    },
    "exoscale:index/DbaasPgDatabaseTimeouts:DbaasPgDatabaseTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasPgUserTimeouts:DbaasPgUserTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasTimeouts:DbaasTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/DbaasValkey:DbaasValkey": {
      "properties": {
        "ipFilters": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of CIDR blocks to allow incoming connections from.\n"
        },
        "valkeySettings": {
          "type": "string",
          "description": "Valkey configuration settings in JSON format (`exo dbaas type show valkey --settings=valkey` for reference).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipFilters",
            "valkeySettings"
          ]
        }
      }
    },
    "exoscale:index/ElasticIpHealthcheck:ElasticIpHealthcheck": {
      "properties": {
        "interval": {
          "type": "integer",
          "description": "The healthcheck interval (seconds; must be between <span pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\">`5`</span> and <span pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\">`300`</span>; default: <span pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\">`10`</span>).\n"
        },
        "mode": {
          "type": "string",
          "description": "The healthcheck mode (<span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>, <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span> or <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span>; may only be set at creation time).\n"
        },
        "port": {
          "type": "integer",
          "description": "The healthcheck target port (must be between <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span> and <span pulumi-lang-nodejs=\"`65535`\" pulumi-lang-dotnet=\"`65535`\" pulumi-lang-go=\"`65535`\" pulumi-lang-python=\"`65535`\" pulumi-lang-yaml=\"`65535`\" pulumi-lang-java=\"`65535`\">`65535`</span>).\n"
        },
        "strikesFail": {
          "type": "integer",
          "description": "The number of failed healthcheck attempts before considering the target unhealthy (must be between <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span> and <span pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\">`20`</span>; default: <span pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\">`2`</span>).\n"
        },
        "strikesOk": {
          "type": "integer",
          "description": "The number of successful healthcheck attempts before considering the target healthy (must be between <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span> and <span pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\">`20`</span>; default: <span pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\">`3`</span>).\n"
        },
        "timeout": {
          "type": "integer",
          "description": "The time before considering a healthcheck probing failed (seconds; must be between <span pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\">`2`</span> and <span pulumi-lang-nodejs=\"`60`\" pulumi-lang-dotnet=\"`60`\" pulumi-lang-go=\"`60`\" pulumi-lang-python=\"`60`\" pulumi-lang-yaml=\"`60`\" pulumi-lang-java=\"`60`\">`60`</span>; default: <span pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\">`3`</span>).\n"
        },
        "tlsSkipVerify": {
          "type": "boolean",
          "description": "Disable TLS certificate verification for healthcheck in <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span> mode (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "tlsSni": {
          "type": "string",
          "description": "The healthcheck server name to present with SNI in <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span> mode.\n"
        },
        "uri": {
          "type": "string",
          "description": "The healthcheck target URI (required in `http(s)` modes).\n"
        }
      },
      "type": "object",
      "required": [
        "mode",
        "port"
      ]
    },
    "exoscale:index/IamApiKeyTimeouts:IamApiKeyTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/IamOrgPolicyServices:IamOrgPolicyServices": {
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FIamOrgPolicyServicesRule:IamOrgPolicyServicesRule"
          },
          "description": "List of IAM service rules (if type is <span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>).\n"
        },
        "type": {
          "type": "string",
          "description": "Service type (<span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>, <span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span>, or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "rules",
            "type"
          ]
        }
      }
    },
    "exoscale:index/IamOrgPolicyServicesRule:IamOrgPolicyServicesRule": {
      "properties": {
        "action": {
          "type": "string",
          "description": "IAM policy rule action (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "expression": {
          "type": "string",
          "description": "IAM policy rule expression.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This field is not suported. Specify resources using CEL expressions."
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "action",
            "expression",
            "resources"
          ]
        }
      }
    },
    "exoscale:index/IamOrgPolicyTimeouts:IamOrgPolicyTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/IamRolePolicy:IamRolePolicy": {
      "properties": {
        "defaultServiceStrategy": {
          "type": "string",
          "description": "Default service strategy (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "services": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/types/exoscale:index%2FIamRolePolicyServices:IamRolePolicyServices"
          },
          "description": "IAM policy services.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "defaultServiceStrategy",
            "services"
          ]
        }
      }
    },
    "exoscale:index/IamRolePolicyServices:IamRolePolicyServices": {
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FIamRolePolicyServicesRule:IamRolePolicyServicesRule"
          },
          "description": "List of IAM service rules (if type is <span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>).\n"
        },
        "type": {
          "type": "string",
          "description": "Service type (<span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>, <span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span>, or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "rules",
            "type"
          ]
        }
      }
    },
    "exoscale:index/IamRolePolicyServicesRule:IamRolePolicyServicesRule": {
      "properties": {
        "action": {
          "type": "string",
          "description": "IAM policy rule action (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "expression": {
          "type": "string",
          "description": "IAM policy rule expression.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This field is not suported. Specify resources using CEL expressions."
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "action",
            "expression",
            "resources"
          ]
        }
      }
    },
    "exoscale:index/IamRoleTimeouts:IamRoleTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/InstancePoolInstance:InstancePoolInstance": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "ipv6Address": {
          "type": "string",
          "description": "The instance (main network interface) IPv6 address.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance name.\n"
        },
        "publicIpAddress": {
          "type": "string",
          "description": "The instance (main network interface) IPv4 address.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "ipv6Address",
            "publicIpAddress"
          ]
        }
      }
    },
    "exoscale:index/NlbServiceHealthcheck:NlbServiceHealthcheck": {
      "properties": {
        "interval": {
          "type": "integer",
          "description": "The healthcheck interval in seconds (default: <span pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\">`10`</span>).\n"
        },
        "mode": {
          "type": "string",
          "description": "The healthcheck mode (<span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>|<span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>|<span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span>; default: <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>).\n"
        },
        "port": {
          "type": "integer",
          "description": "The NLB service (TCP/UDP) port.\n"
        },
        "retries": {
          "type": "integer",
          "description": "The healthcheck retries (default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>).\n"
        },
        "timeout": {
          "type": "integer",
          "description": "The healthcheck timeout (seconds; default: <span pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\">`5`</span>).\n"
        },
        "tlsSni": {
          "type": "string",
          "description": "The healthcheck TLS SNI server name (only if <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span> is <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span>).\n"
        },
        "uri": {
          "type": "string",
          "description": "The healthcheck URI (must be set only if <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span> is `http(s)`).\n"
        }
      },
      "type": "object",
      "required": [
        "port"
      ]
    },
    "exoscale:index/SksClusterAudit:SksClusterAudit": {
      "properties": {
        "bearerToken": {
          "type": "string",
          "description": "The optional bearer token to include in the request header\n",
          "secret": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether to run the APIServer with the configured Kubernetes Audit\n"
        },
        "endpoint": {
          "type": "string",
          "description": "The cluster API endpoint.\n"
        },
        "initialBackoff": {
          "type": "string",
          "description": "The Initial Backoff to wait before sending data to the remote server (default '10s')\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/SksClusterOidc:SksClusterOidc": {
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The OpenID client ID.\n"
        },
        "groupsClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user's group.\n"
        },
        "groupsPrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to group claims.\n"
        },
        "issuerUrl": {
          "type": "string",
          "description": "The OpenID provider URL.\n"
        },
        "requiredClaim": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value pairs that describes a required claim in the OpenID Token.\n"
        },
        "usernameClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user name.\n"
        },
        "usernamePrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to username claims.\n"
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "issuerUrl"
      ]
    },
    "exoscale:index/SksNodepoolKubeletImageGc:SksNodepoolKubeletImageGc": {
      "properties": {
        "highThreshold": {
          "type": "integer",
          "description": "The percent of disk usage after which image garbage collection is always run\n"
        },
        "lowThreshold": {
          "type": "integer",
          "description": "The percent of disk usage before which image garbage collection is never run\n"
        },
        "minAge": {
          "type": "string",
          "description": "The minimum age for an unused image before it is garbage collected (k8s duration format, eg. 1h)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/SosBucketPolicyTimeouts:SosBucketPolicyTimeouts": {
      "properties": {
        "create": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        },
        "delete": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
        },
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        },
        "update": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getBlockStorageVolumeInstance:getBlockStorageVolumeInstance": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Instance ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getBlockStorageVolumeSnapshot:getBlockStorageVolumeSnapshot": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Snapshot ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getBlockStorageVolumeSnapshotTimeouts:getBlockStorageVolumeSnapshotTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getBlockStorageVolumeSnapshotVolume:getBlockStorageVolumeSnapshotVolume": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Volume ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getBlockStorageVolumeTimeouts:getBlockStorageVolumeTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getComputeInstanceListInstance:getComputeInstanceListInstance": {
      "properties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.AntiAffinityGroup \" pulumi-lang-dotnet=\" exoscale.AntiAffinityGroup \" pulumi-lang-go=\" AntiAffinityGroup \" pulumi-lang-python=\" AntiAffinityGroup \" pulumi-lang-yaml=\" exoscale.AntiAffinityGroup \" pulumi-lang-java=\" exoscale.AntiAffinityGroup \"> exoscale.AntiAffinityGroup </span>(IDs).\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The compute instance creation date.\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The instance disk size (GiB).\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.ElasticIp \" pulumi-lang-dotnet=\" exoscale.ElasticIp \" pulumi-lang-go=\" ElasticIp \" pulumi-lang-python=\" ElasticIp \" pulumi-lang-yaml=\" exoscale.ElasticIp \" pulumi-lang-java=\" exoscale.ElasticIp \"> exoscale.ElasticIp </span>(IDs).\n"
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Indicates if the instance has secure boot enabled.\n"
        },
        "enableTpm": {
          "type": "boolean",
          "description": "Indicates if the instance has TPM enabled.\n"
        },
        "id": {
          "type": "string",
          "description": "The compute instance ID to match (conflicts with <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span>).\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Whether IPv6 is enabled on the instance.\n"
        },
        "ipv6Address": {
          "type": "string",
          "description": "The instance (main network interface) IPv6 address (if enabled).\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "managerId": {
          "type": "string",
          "description": "The instance manager ID, if any.\n"
        },
        "managerType": {
          "type": "string",
          "description": "The instance manager type (instance pool, SKS node pool, etc.), if any.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance name to match (conflicts with <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>).\n"
        },
        "privateNetworkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.PrivateNetwork \" pulumi-lang-dotnet=\" exoscale.PrivateNetwork \" pulumi-lang-go=\" PrivateNetwork \" pulumi-lang-python=\" PrivateNetwork \" pulumi-lang-yaml=\" exoscale.PrivateNetwork \" pulumi-lang-java=\" exoscale.PrivateNetwork \"> exoscale.PrivateNetwork </span>(IDs).\n"
        },
        "publicIpAddress": {
          "type": "string",
          "description": "The instance (main network interface) IPv4 address.\n"
        },
        "reverseDns": {
          "type": "string",
          "description": "Domain name for reverse DNS record.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.SecurityGroup \" pulumi-lang-dotnet=\" exoscale.SecurityGroup \" pulumi-lang-go=\" SecurityGroup \" pulumi-lang-python=\" SecurityGroup \" pulumi-lang-yaml=\" exoscale.SecurityGroup \" pulumi-lang-java=\" exoscale.SecurityGroup \"> exoscale.SecurityGroup </span>(IDs).\n"
        },
        "sshKey": {
          "type": "string",
          "description": "The<span pulumi-lang-nodejs=\" exoscale.SshKey \" pulumi-lang-dotnet=\" exoscale.SshKey \" pulumi-lang-go=\" SshKey \" pulumi-lang-python=\" SshKey \" pulumi-lang-yaml=\" exoscale.SshKey \" pulumi-lang-java=\" exoscale.SshKey \"> exoscale.SshKey </span>(name) authorized on the instance.\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"> ssh_keys </span>instead"
        },
        "sshKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of<span pulumi-lang-nodejs=\" exoscale.SshKey \" pulumi-lang-dotnet=\" exoscale.SshKey \" pulumi-lang-go=\" SshKey \" pulumi-lang-python=\" SshKey \" pulumi-lang-yaml=\" exoscale.SshKey \" pulumi-lang-java=\" exoscale.SshKey \"> exoscale.SshKey </span>(name) authorized on the instance.\n"
        },
        "state": {
          "type": "string",
          "description": "The instance state.\n"
        },
        "templateId": {
          "type": "string",
          "description": "The instance<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>ID.\n"
        },
        "type": {
          "type": "string",
          "description": "The instance type.\n"
        },
        "userData": {
          "type": "string",
          "description": "The instance [cloud-init](http://cloudinit.readthedocs.io/en/latest/) configuration.\n"
        },
        "zone": {
          "type": "string",
          "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "antiAffinityGroupIds",
        "createdAt",
        "deployTargetId",
        "diskSize",
        "elasticIpIds",
        "enableSecureBoot",
        "enableTpm",
        "ipv6",
        "ipv6Address",
        "labels",
        "managerId",
        "managerType",
        "privateNetworkIds",
        "publicIpAddress",
        "reverseDns",
        "securityGroupIds",
        "sshKey",
        "sshKeys",
        "state",
        "templateId",
        "type",
        "userData",
        "zone"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getDatabaseUriTimeouts:getDatabaseUriTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getDomainRecordFilter:getDomainRecordFilter": {
      "properties": {
        "contentRegex": {
          "type": "string",
          "description": "A regular expression to match the record content.\n"
        },
        "id": {
          "type": "string",
          "description": "The record ID to match.\n"
        },
        "name": {
          "type": "string",
          "description": "The domain record name to match.\n"
        },
        "recordType": {
          "type": "string",
          "description": "The record type to match.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getDomainRecordRecord:getDomainRecordRecord": {
      "properties": {
        "content": {
          "type": "string",
          "description": "Content of the Record\n"
        },
        "domain": {
          "type": "string",
          "description": "Domain of the Record\n"
        },
        "id": {
          "type": "string",
          "description": "ID of the Record\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the Record\n"
        },
        "prio": {
          "type": "integer",
          "description": "Priority of the Record\n"
        },
        "recordType": {
          "type": "string",
          "description": "Type of the Record\n"
        },
        "ttl": {
          "type": "integer",
          "description": "TTL of the Record\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getElasticIpHealthcheck:getElasticIpHealthcheck": {
      "properties": {
        "interval": {
          "type": "integer",
          "description": "The healthcheck interval in seconds.\n"
        },
        "mode": {
          "type": "string",
          "description": "The healthcheck mode.\n"
        },
        "port": {
          "type": "integer",
          "description": "The healthcheck target port.\n"
        },
        "strikesFail": {
          "type": "integer",
          "description": "The number of failed healthcheck attempts before considering the target unhealthy.\n"
        },
        "strikesOk": {
          "type": "integer",
          "description": "The number of successful healthcheck attempts before considering the target healthy.\n"
        },
        "timeout": {
          "type": "integer",
          "description": "The time in seconds before considering a healthcheck probing failed.\n"
        },
        "tlsSkipVerify": {
          "type": "boolean",
          "description": "Disable TLS certificate verification for healthcheck in <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span> mode.\n"
        },
        "tlsSni": {
          "type": "string",
          "description": "The healthcheck server name to present with SNI in <span pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\">`https`</span> mode.\n"
        },
        "uri": {
          "type": "string",
          "description": "The healthcheck URI.\n"
        }
      },
      "type": "object",
      "required": [
        "interval",
        "mode",
        "port",
        "strikesFail",
        "strikesOk",
        "timeout",
        "tlsSkipVerify",
        "tlsSni",
        "uri"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamApiKeyTimeouts:getIamApiKeyTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getIamOrgPolicyServices:getIamOrgPolicyServices": {
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FgetIamOrgPolicyServicesRule:getIamOrgPolicyServicesRule"
          },
          "description": "List of IAM service rules (if type is <span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>).\n"
        },
        "type": {
          "type": "string",
          "description": "Service type (<span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>, <span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span>, or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        }
      },
      "type": "object",
      "required": [
        "rules",
        "type"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamOrgPolicyServicesRule:getIamOrgPolicyServicesRule": {
      "properties": {
        "action": {
          "type": "string",
          "description": "IAM policy rule action (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "expression": {
          "type": "string",
          "description": "IAM policy rule expression.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This field is no longer suported."
        }
      },
      "type": "object",
      "required": [
        "action",
        "expression",
        "resources"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamOrgPolicyTimeouts:getIamOrgPolicyTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getIamRolePolicy:getIamRolePolicy": {
      "properties": {
        "defaultServiceStrategy": {
          "type": "string",
          "description": "Default service strategy (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "services": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/types/exoscale:index%2FgetIamRolePolicyServices:getIamRolePolicyServices"
          },
          "description": "IAM policy services.\n"
        }
      },
      "type": "object",
      "required": [
        "defaultServiceStrategy",
        "services"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamRolePolicyServices:getIamRolePolicyServices": {
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FgetIamRolePolicyServicesRule:getIamRolePolicyServicesRule"
          },
          "description": "List of IAM service rules (if type is <span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>).\n"
        },
        "type": {
          "type": "string",
          "description": "Service type (<span pulumi-lang-nodejs=\"`rules`\" pulumi-lang-dotnet=\"`Rules`\" pulumi-lang-go=\"`rules`\" pulumi-lang-python=\"`rules`\" pulumi-lang-yaml=\"`rules`\" pulumi-lang-java=\"`rules`\">`rules`</span>, <span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span>, or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        }
      },
      "type": "object",
      "required": [
        "rules",
        "type"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamRolePolicyServicesRule:getIamRolePolicyServicesRule": {
      "properties": {
        "action": {
          "type": "string",
          "description": "IAM policy rule action (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "expression": {
          "type": "string",
          "description": "IAM policy rule expression.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This field is no longer suported."
        }
      },
      "type": "object",
      "required": [
        "action",
        "expression",
        "resources"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getIamRoleTimeouts:getIamRoleTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getInstancePoolInstance:getInstancePoolInstance": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The compute instance ID.\n"
        },
        "ipv6Address": {
          "type": "string",
          "description": "The instance (main network interface) IPv6 address.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance name.\n"
        },
        "publicIpAddress": {
          "type": "string",
          "description": "The instance (main network interface) IPv4 address.\n"
        }
      },
      "type": "object",
      "required": [
        "ipv6Address",
        "publicIpAddress"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getInstancePoolListPool:getInstancePoolListPool": {
      "properties": {
        "affinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.AntiAffinityGroup \" pulumi-lang-dotnet=\" exoscale.AntiAffinityGroup \" pulumi-lang-go=\" AntiAffinityGroup \" pulumi-lang-python=\" AntiAffinityGroup \" pulumi-lang-yaml=\" exoscale.AntiAffinityGroup \" pulumi-lang-java=\" exoscale.AntiAffinityGroup \"> exoscale.AntiAffinityGroup </span>(IDs). Use<span pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"> anti_affinity_group_ids </span>instead.\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"> anti_affinity_group_ids </span>instead."
        },
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.AntiAffinityGroup \" pulumi-lang-dotnet=\" exoscale.AntiAffinityGroup \" pulumi-lang-go=\" AntiAffinityGroup \" pulumi-lang-python=\" AntiAffinityGroup \" pulumi-lang-yaml=\" exoscale.AntiAffinityGroup \" pulumi-lang-java=\" exoscale.AntiAffinityGroup \"> exoscale.AntiAffinityGroup </span>(IDs).\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "The deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "The instance pool description.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size.\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.ElasticIp \" pulumi-lang-dotnet=\" exoscale.ElasticIp \" pulumi-lang-go=\" ElasticIp \" pulumi-lang-python=\" ElasticIp \" pulumi-lang-yaml=\" exoscale.ElasticIp \" pulumi-lang-java=\" exoscale.ElasticIp \"> exoscale.ElasticIp </span>(IDs).\n"
        },
        "id": {
          "type": "string",
          "description": "The instance pool ID to match (conflicts with <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span>).\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix the managed instances name.\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed instances type.\n"
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FgetInstancePoolListPoolInstance:getInstancePoolListPoolInstance"
          },
          "description": "The list of managed instances. Structure is documented below.\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Whether IPv6 is enabled on managed instances.\n"
        },
        "keyPair": {
          "type": "string",
          "description": "The<span pulumi-lang-nodejs=\" exoscale.SshKey \" pulumi-lang-dotnet=\" exoscale.SshKey \" pulumi-lang-go=\" SshKey \" pulumi-lang-python=\" SshKey \" pulumi-lang-yaml=\" exoscale.SshKey \" pulumi-lang-java=\" exoscale.SshKey \"> exoscale.SshKey </span>(name) authorized on the managed instances.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "minAvailable": {
          "type": "integer",
          "description": "Minimum number of running Instances.\n"
        },
        "name": {
          "type": "string",
          "description": "The pool name to match (conflicts with <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>).\n"
        },
        "networkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.PrivateNetwork \" pulumi-lang-dotnet=\" exoscale.PrivateNetwork \" pulumi-lang-go=\" PrivateNetwork \" pulumi-lang-python=\" PrivateNetwork \" pulumi-lang-yaml=\" exoscale.PrivateNetwork \" pulumi-lang-java=\" exoscale.PrivateNetwork \"> exoscale.PrivateNetwork </span>(IDs).\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of attached<span pulumi-lang-nodejs=\" exoscale.SecurityGroup \" pulumi-lang-dotnet=\" exoscale.SecurityGroup \" pulumi-lang-go=\" SecurityGroup \" pulumi-lang-python=\" SecurityGroup \" pulumi-lang-yaml=\" exoscale.SecurityGroup \" pulumi-lang-java=\" exoscale.SecurityGroup \"> exoscale.SecurityGroup </span>(IDs).\n"
        },
        "size": {
          "type": "integer",
          "description": "The number managed instances.\n"
        },
        "state": {
          "type": "string",
          "description": "The pool state.\n"
        },
        "templateId": {
          "type": "string",
          "description": "The managed instances<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>ID.\n"
        },
        "userData": {
          "type": "string",
          "description": "[cloud-init](http://cloudinit.readthedocs.io/en/latest/) configuration.\n"
        },
        "zone": {
          "type": "string",
          "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "affinityGroupIds",
        "antiAffinityGroupIds",
        "deployTargetId",
        "description",
        "diskSize",
        "elasticIpIds",
        "instancePrefix",
        "instanceType",
        "instances",
        "ipv6",
        "keyPair",
        "minAvailable",
        "networkIds",
        "securityGroupIds",
        "size",
        "state",
        "templateId",
        "userData",
        "zone"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getInstancePoolListPoolInstance:getInstancePoolListPoolInstance": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The compute instance ID.\n"
        },
        "ipv6Address": {
          "type": "string",
          "description": "The instance (main network interface) IPv6 address.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance name.\n"
        },
        "publicIpAddress": {
          "type": "string",
          "description": "The instance (main network interface) IPv4 address.\n"
        }
      },
      "type": "object",
      "required": [
        "ipv6Address",
        "publicIpAddress"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getNlbServiceListService:getNlbServiceListService": {
      "properties": {
        "description": {
          "type": "string",
          "description": "NLB service description.\n"
        },
        "healthcheck": {
          "$ref": "#/types/exoscale:index%2FgetNlbServiceListServiceHealthcheck:getNlbServiceListServiceHealthcheck"
        },
        "id": {
          "type": "string",
          "description": "NLB service ID.\n"
        },
        "instancePoolId": {
          "type": "string",
          "description": "The exoscale*instance*pool (ID) to forward traffic to.\n"
        },
        "name": {
          "type": "string",
          "description": "NLB Service name.\n"
        },
        "port": {
          "type": "integer",
          "description": "Port exposed on the NLB's public IP.\n"
        },
        "protocol": {
          "type": "string",
          "description": "Network traffic protocol.\n"
        },
        "state": {
          "type": "string",
          "description": "NLB Service State.\n"
        },
        "strategy": {
          "type": "string",
          "description": "The strategy (`round-robin`|`source-hash`).\n"
        },
        "targetPort": {
          "type": "integer",
          "description": "Port on which the network traffic will be forwarded to on the receiving instance.\n"
        }
      },
      "type": "object",
      "required": [
        "description",
        "healthcheck",
        "id",
        "instancePoolId",
        "name",
        "port",
        "protocol",
        "state",
        "strategy",
        "targetPort"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getNlbServiceListServiceHealthcheck:getNlbServiceListServiceHealthcheck": {
      "properties": {
        "interval": {
          "type": "integer"
        },
        "mode": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        },
        "retries": {
          "type": "integer"
        },
        "timeout": {
          "type": "integer"
        },
        "tlsSni": {
          "type": "string"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "interval",
        "mode",
        "port",
        "retries",
        "timeout",
        "tlsSni",
        "uri"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getNlbServiceListTimeouts:getNlbServiceListTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getSksClusterAudit:getSksClusterAudit": {
      "properties": {
        "bearerToken": {
          "type": "string",
          "description": "The optional bearer token to include in the request header\n",
          "secret": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether to run the APIServer with the configured Kubernetes Audit\n"
        },
        "endpoint": {
          "type": "string",
          "description": "The cluster API endpoint.\n"
        },
        "initialBackoff": {
          "type": "string",
          "description": "The Initial Backoff to wait before sending data to the remote server (default '10s')\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getSksClusterListCluster:getSksClusterListCluster": {
      "properties": {
        "addons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\">`exoscale_ccm`</span>/<span pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\">`metrics_server`</span> attributes, it will be removed in a future release."
        },
        "aggregationCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between the control plane and the aggregation layer (e.g. `metrics-server`).\n"
        },
        "audit": {
          "$ref": "#/types/exoscale:index%2FgetSksClusterListClusterAudit:getSksClusterListClusterAudit",
          "description": "Parameters for Kubernetes Audit configuration (may only be enabled at creation time)\n"
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "Enable automatic upgrading of the control plane version.\n"
        },
        "cni": {
          "type": "string",
          "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n"
        },
        "controlPlaneCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between control plane components.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The cluster creation date.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the cluster.\n"
        },
        "enableKubeProxy": {
          "type": "boolean",
          "description": "Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n"
        },
        "endpoint": {
          "type": "string",
          "description": "The cluster API endpoint.\n"
        },
        "exoscaleCcm": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "exoscaleCsi": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>; requires the CCM to be enabled).\n"
        },
        "featureGates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Feature gates options for the cluster.\n"
        },
        "id": {
          "type": "string"
        },
        "kubeletCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between kubelets and the control plane.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "metricsServer": {
          "type": "boolean",
          "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "name": {
          "type": "string"
        },
        "nodepools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of<span pulumi-lang-nodejs=\" exoscale.SksNodepool \" pulumi-lang-dotnet=\" exoscale.SksNodepool \" pulumi-lang-go=\" SksNodepool \" pulumi-lang-python=\" SksNodepool \" pulumi-lang-yaml=\" exoscale.SksNodepool \" pulumi-lang-java=\" exoscale.SksNodepool \"> exoscale.SksNodepool </span>(IDs) attached to the cluster.\n"
        },
        "oidc": {
          "$ref": "#/types/exoscale:index%2FgetSksClusterListClusterOidc:getSksClusterListClusterOidc",
          "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
        },
        "serviceLevel": {
          "type": "string",
          "description": "The service level of the control plane (<span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span> or <span pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\">`starter`</span>; default: <span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span>; may only be set at creation time).\n"
        },
        "state": {
          "type": "string",
          "description": "The cluster state.\n"
        },
        "version": {
          "type": "string",
          "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n"
        },
        "zone": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "addons",
        "aggregationCa",
        "controlPlaneCa",
        "createdAt",
        "enableKubeProxy",
        "endpoint",
        "kubeletCa",
        "nodepools",
        "oidc",
        "state",
        "version",
        "zone"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getSksClusterListClusterAudit:getSksClusterListClusterAudit": {
      "properties": {
        "bearerToken": {
          "type": "string",
          "description": "The optional bearer token to include in the request header\n",
          "secret": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether to run the APIServer with the configured Kubernetes Audit\n"
        },
        "endpoint": {
          "type": "string",
          "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
        },
        "initialBackoff": {
          "type": "string",
          "description": "The Initial Backoff to wait before sending data to the remote server (default '10s')\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getSksClusterListClusterOidc:getSksClusterListClusterOidc": {
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The OpenID client ID.\n"
        },
        "groupsClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user's group.\n"
        },
        "groupsPrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to group claims.\n"
        },
        "issuerUrl": {
          "type": "string",
          "description": "The OpenID provider URL.\n"
        },
        "requiredClaim": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value pairs that describes a required claim in the OpenID Token.\n"
        },
        "usernameClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user name.\n"
        },
        "usernamePrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to username claims.\n"
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "issuerUrl"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getSksClusterOidc:getSksClusterOidc": {
      "properties": {
        "clientId": {
          "type": "string",
          "description": "The OpenID client ID.\n"
        },
        "groupsClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user's group.\n"
        },
        "groupsPrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to group claims.\n"
        },
        "issuerUrl": {
          "type": "string",
          "description": "The OpenID provider URL.\n"
        },
        "requiredClaim": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value pairs that describes a required claim in the OpenID Token.\n"
        },
        "usernameClaim": {
          "type": "string",
          "description": "An OpenID JWT claim to use as the user name.\n"
        },
        "usernamePrefix": {
          "type": "string",
          "description": "An OpenID prefix prepended to username claims.\n"
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "issuerUrl"
      ]
    },
    "exoscale:index/getSksNodepoolKubeletImageGc:getSksNodepoolKubeletImageGc": {
      "properties": {
        "highThreshold": {
          "type": "integer",
          "description": "The percent of disk usage after which image garbage collection is always run\n"
        },
        "lowThreshold": {
          "type": "integer",
          "description": "The percent of disk usage before which image garbage collection is never run\n"
        },
        "minAge": {
          "type": "string",
          "description": "The minimum age for an unused image before it is garbage collected (k8s duration format, eg. 1h)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getSksNodepoolListNodepool:getSksNodepoolListNodepool": {
      "properties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of<span pulumi-lang-nodejs=\" exoscale.AntiAffinityGroup \" pulumi-lang-dotnet=\" exoscale.AntiAffinityGroup \" pulumi-lang-go=\" AntiAffinityGroup \" pulumi-lang-python=\" AntiAffinityGroup \" pulumi-lang-yaml=\" exoscale.AntiAffinityGroup \" pulumi-lang-java=\" exoscale.AntiAffinityGroup \"> exoscale.AntiAffinityGroup </span>(IDs) to be attached to the managed instances.\n"
        },
        "clusterId": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "description": "The pool creation date.\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the pool.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size (GiB; default: <span pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\">`50`</span>).\n"
        },
        "id": {
          "type": "string"
        },
        "instancePoolId": {
          "type": "string",
          "description": "The underlying<span pulumi-lang-nodejs=\" exoscale.InstancePool \" pulumi-lang-dotnet=\" exoscale.InstancePool \" pulumi-lang-go=\" InstancePool \" pulumi-lang-python=\" InstancePool \" pulumi-lang-yaml=\" exoscale.InstancePool \" pulumi-lang-java=\" exoscale.InstancePool \"> exoscale.InstancePool </span>ID.\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix the managed instances name (default <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPV6 for the nodepool nodes\n"
        },
        "kubeletImageGcs": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FgetSksNodepoolListNodepoolKubeletImageGc:getSksNodepoolListNodepoolKubeletImageGc"
          },
          "description": "Configuration for this nodepool's kubelet image garbage collector\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string"
        },
        "privateNetworkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of<span pulumi-lang-nodejs=\" exoscale.PrivateNetwork \" pulumi-lang-dotnet=\" exoscale.PrivateNetwork \" pulumi-lang-go=\" PrivateNetwork \" pulumi-lang-python=\" PrivateNetwork \" pulumi-lang-yaml=\" exoscale.PrivateNetwork \" pulumi-lang-java=\" exoscale.PrivateNetwork \"> exoscale.PrivateNetwork </span>(IDs) to be attached to the managed instances.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of<span pulumi-lang-nodejs=\" exoscale.SecurityGroup \" pulumi-lang-dotnet=\" exoscale.SecurityGroup \" pulumi-lang-go=\" SecurityGroup \" pulumi-lang-python=\" SecurityGroup \" pulumi-lang-yaml=\" exoscale.SecurityGroup \" pulumi-lang-java=\" exoscale.SecurityGroup \"> exoscale.SecurityGroup </span>(IDs) to be attached to the managed instances.\n"
        },
        "size": {
          "type": "integer"
        },
        "state": {
          "type": "string",
          "description": "The current pool state.\n"
        },
        "storageLvm": {
          "type": "boolean",
          "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n"
        },
        "taints": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { <key> = \"<value>:<effect>\" }').\n"
        },
        "templateId": {
          "type": "string",
          "description": "The managed instances template ID.\n"
        },
        "version": {
          "type": "string",
          "description": "The managed instances version.\n"
        },
        "zone": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "createdAt",
        "instancePoolId",
        "state",
        "templateId",
        "version",
        "zone"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "exoscale:index/getSksNodepoolListNodepoolKubeletImageGc:getSksNodepoolListNodepoolKubeletImageGc": {
      "properties": {
        "highThreshold": {
          "type": "integer",
          "description": "The percent of disk usage after which image garbage collection is always run\n"
        },
        "lowThreshold": {
          "type": "integer",
          "description": "The percent of disk usage before which image garbage collection is never run\n"
        },
        "minAge": {
          "type": "string",
          "description": "The minimum age for an unused image before it is garbage collected (k8s duration format, eg. 1h)\n"
        }
      },
      "type": "object"
    },
    "exoscale:index/getSosBucketPolicyTimeouts:getSosBucketPolicyTimeouts": {
      "properties": {
        "read": {
          "type": "string",
          "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
        }
      },
      "type": "object"
    }
  },
  "provider": {
    "description": "The provider type for the exoscale 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": {
      "environment": {
        "type": "string"
      },
      "key": {
        "type": "string",
        "description": "Exoscale API key",
        "secret": true
      },
      "secret": {
        "type": "string",
        "description": "Exoscale API secret",
        "secret": true
      },
      "sosEndpoint": {
        "type": "string"
      }
    },
    "type": "object",
    "inputProperties": {
      "delay": {
        "type": "integer",
        "deprecationMessage": "Does nothing"
      },
      "environment": {
        "type": "string"
      },
      "key": {
        "type": "string",
        "description": "Exoscale API key",
        "defaultInfo": {
          "environment": [
            "EXOSCALE_API_KEY"
          ]
        },
        "secret": true
      },
      "secret": {
        "type": "string",
        "description": "Exoscale API secret",
        "defaultInfo": {
          "environment": [
            "EXOSCALE_API_SECRET"
          ]
        },
        "secret": true
      },
      "sosEndpoint": {
        "type": "string"
      },
      "timeout": {
        "type": "integer",
        "description": "Timeout in seconds for waiting on compute resources to become available (by default: 3600)"
      }
    },
    "methods": {
      "terraformConfig": "pulumi:providers:exoscale/terraformConfig"
    }
  },
  "resources": {
    "exoscale:index/antiAffinityGroup:AntiAffinityGroup": {
      "description": "Manage Exoscale [Anti-Affinity Groups](https://community.exoscale.com/product/compute/instances/how-to/anti-affinity/).\n\nCorresponding data source: exoscale_anti_affinity_group.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myAntiAffinityGroup = new exoscale.AntiAffinityGroup(\"my_anti_affinity_group\", {\n    name: \"my-anti-affinity-group\",\n    description: \"Prevent compute instances to run on the same host\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_anti_affinity_group = exoscale.AntiAffinityGroup(\"my_anti_affinity_group\",\n    name=\"my-anti-affinity-group\",\n    description=\"Prevent compute instances to run on the same host\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myAntiAffinityGroup = new Exoscale.AntiAffinityGroup(\"my_anti_affinity_group\", new()\n    {\n        Name = \"my-anti-affinity-group\",\n        Description = \"Prevent compute instances to run on the same host\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewAntiAffinityGroup(ctx, \"my_anti_affinity_group\", &exoscale.AntiAffinityGroupArgs{\n\t\t\tName:        pulumi.String(\"my-anti-affinity-group\"),\n\t\t\tDescription: pulumi.String(\"Prevent compute instances to run on the same host\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.AntiAffinityGroup;\nimport com.pulumiverse.exoscale.AntiAffinityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myAntiAffinityGroup = new AntiAffinityGroup(\"myAntiAffinityGroup\", AntiAffinityGroupArgs.builder()\n            .name(\"my-anti-affinity-group\")\n            .description(\"Prevent compute instances to run on the same host\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myAntiAffinityGroup:\n    type: exoscale:AntiAffinityGroup\n    name: my_anti_affinity_group\n    properties:\n      name: my-anti-affinity-group\n      description: Prevent compute instances to run on the same host\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing anti-affinity group may be imported by `<ID>`:\n\n```sh\n$ pulumi import exoscale:index/antiAffinityGroup:AntiAffinityGroup \\ \n```\n\n  exoscale_anti_affinity_group.my_anti_affinity_group \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6\n\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the group.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The anti-affinity group name.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the group.\n",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "❗ The anti-affinity group name.\n",
          "willReplaceOnChanges": true
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AntiAffinityGroup resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "❗ A free-form text describing the group.\n",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "❗ The anti-affinity group name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/blockStorageVolume:BlockStorageVolume": {
      "description": "Manage [Exoscale Block Storage](https://community.exoscale.com/product/storage/block-storage/) Volume.\n\nBlock Storage offers persistent externally attached volumes for your workloads.\n",
      "properties": {
        "blocksize": {
          "type": "integer",
          "description": "Volume block size.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "Volume creation date.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels.\n"
        },
        "name": {
          "type": "string",
          "description": "Volume name.\n"
        },
        "size": {
          "type": "integer",
          "description": "Volume size in GB (default 10). If volume is attached, instance must be stopped to update this value. Volume can only grow, cannot be shrunk.\n"
        },
        "snapshotTarget": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTarget:BlockStorageVolumeSnapshotTarget",
          "description": "Block storage snapshot to use when creating a volume. Read-only after creation.\n"
        },
        "state": {
          "type": "string",
          "description": "Volume state.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeTimeouts:BlockStorageVolumeTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "blocksize",
        "createdAt",
        "name",
        "state",
        "zone"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels.\n"
        },
        "name": {
          "type": "string",
          "description": "Volume name.\n"
        },
        "size": {
          "type": "integer",
          "description": "Volume size in GB (default 10). If volume is attached, instance must be stopped to update this value. Volume can only grow, cannot be shrunk.\n"
        },
        "snapshotTarget": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTarget:BlockStorageVolumeSnapshotTarget",
          "description": "Block storage snapshot to use when creating a volume. Read-only after creation.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeTimeouts:BlockStorageVolumeTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering BlockStorageVolume resources.\n",
        "properties": {
          "blocksize": {
            "type": "integer",
            "description": "Volume block size.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "Volume creation date.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels.\n"
          },
          "name": {
            "type": "string",
            "description": "Volume name.\n"
          },
          "size": {
            "type": "integer",
            "description": "Volume size in GB (default 10). If volume is attached, instance must be stopped to update this value. Volume can only grow, cannot be shrunk.\n"
          },
          "snapshotTarget": {
            "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTarget:BlockStorageVolumeSnapshotTarget",
            "description": "Block storage snapshot to use when creating a volume. Read-only after creation.\n"
          },
          "state": {
            "type": "string",
            "description": "Volume state.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FBlockStorageVolumeTimeouts:BlockStorageVolumeTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/blockStorageVolumeSnapshot:BlockStorageVolumeSnapshot": {
      "description": "Manage [Exoscale Block Storage](https://community.exoscale.com/product/storage/block-storage/) Volume Snapshot.\n\nBlock Storage offers persistent externally attached volumes for your workloads.\n",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "Snapshot creation date.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels.\n"
        },
        "name": {
          "type": "string",
          "description": "Volume snapshot name.\n"
        },
        "size": {
          "type": "integer",
          "description": "Snapshot size in GB.\n"
        },
        "state": {
          "type": "string",
          "description": "Snapshot state.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTimeouts:BlockStorageVolumeSnapshotTimeouts"
        },
        "volume": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotVolume:BlockStorageVolumeSnapshotVolume",
          "description": "Volume from which to create a snapshot.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "name",
        "size",
        "state",
        "volume",
        "zone"
      ],
      "inputProperties": {
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource labels.\n"
        },
        "name": {
          "type": "string",
          "description": "Volume snapshot name.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTimeouts:BlockStorageVolumeSnapshotTimeouts"
        },
        "volume": {
          "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotVolume:BlockStorageVolumeSnapshotVolume",
          "description": "Volume from which to create a snapshot.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "volume",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering BlockStorageVolumeSnapshot resources.\n",
        "properties": {
          "createdAt": {
            "type": "string",
            "description": "Snapshot creation date.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels.\n"
          },
          "name": {
            "type": "string",
            "description": "Volume snapshot name.\n"
          },
          "size": {
            "type": "integer",
            "description": "Snapshot size in GB.\n"
          },
          "state": {
            "type": "string",
            "description": "Snapshot state.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotTimeouts:BlockStorageVolumeSnapshotTimeouts"
          },
          "volume": {
            "$ref": "#/types/exoscale:index%2FBlockStorageVolumeSnapshotVolume:BlockStorageVolumeSnapshotVolume",
            "description": "Volume from which to create a snapshot.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/computeInstance:ComputeInstance": {
      "description": "Manage Exoscale [Compute Instances](https://community.exoscale.com/documentation/compute/).\n\nCorresponding data sources: exoscale_compute_instance, exoscale_compute_instance_list.\n\nAfter the creation, you can retrieve the password of an instance with [Exoscale CLI](https://github.com/exoscale/cli): `exo compute instance reveal-password NAME`.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myTemplate = exoscale.getTemplate({\n    zone: \"ch-gva-2\",\n    name: \"Linux Ubuntu 22.04 LTS 64-bit\",\n});\nconst myInstance = new exoscale.ComputeInstance(\"my_instance\", {\n    zone: \"ch-gva-2\",\n    name: \"my-instance\",\n    templateId: myTemplate.then(myTemplate => myTemplate.id),\n    type: \"standard.medium\",\n    diskSize: 10,\n});\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\nimport pulumiverse_exoscale as exoscale\n\nmy_template = exoscale.get_template(zone=\"ch-gva-2\",\n    name=\"Linux Ubuntu 22.04 LTS 64-bit\")\nmy_instance = exoscale.ComputeInstance(\"my_instance\",\n    zone=\"ch-gva-2\",\n    name=\"my-instance\",\n    template_id=my_template.id,\n    type=\"standard.medium\",\n    disk_size=10)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myTemplate = Exoscale.GetTemplate.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"Linux Ubuntu 22.04 LTS 64-bit\",\n    });\n\n    var myInstance = new Exoscale.ComputeInstance(\"my_instance\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-instance\",\n        TemplateId = myTemplate.Apply(getTemplateResult => getTemplateResult.Id),\n        Type = \"standard.medium\",\n        DiskSize = 10,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyTemplate, err := exoscale.GetTemplate(ctx, &exoscale.GetTemplateArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"Linux Ubuntu 22.04 LTS 64-bit\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewComputeInstance(ctx, \"my_instance\", &exoscale.ComputeInstanceArgs{\n\t\t\tZone:       pulumi.String(\"ch-gva-2\"),\n\t\t\tName:       pulumi.String(\"my-instance\"),\n\t\t\tTemplateId: pulumi.String(myTemplate.Id),\n\t\t\tType:       pulumi.String(\"standard.medium\"),\n\t\t\tDiskSize:   pulumi.Int(10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetTemplateArgs;\nimport com.pulumiverse.exoscale.ComputeInstance;\nimport com.pulumiverse.exoscale.ComputeInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myTemplate = ExoscaleFunctions.getTemplate(GetTemplateArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"Linux Ubuntu 22.04 LTS 64-bit\")\n            .build());\n\n        var myInstance = new ComputeInstance(\"myInstance\", ComputeInstanceArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-instance\")\n            .templateId(myTemplate.id())\n            .type(\"standard.medium\")\n            .diskSize(10)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myInstance:\n    type: exoscale:ComputeInstance\n    name: my_instance\n    properties:\n      zone: ch-gva-2\n      name: my-instance\n      templateId: ${myTemplate.id}\n      type: standard.medium\n      diskSize: 10\nvariables:\n  myTemplate:\n    fn::invoke:\n      function: exoscale:getTemplate\n      arguments:\n        zone: ch-gva-2\n        name: Linux Ubuntu 22.04 LTS 64-bit\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing compute instance may be imported by `<ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/computeInstance:ComputeInstance \\ \n```\n\n  exoscale_compute_instance.my_instance \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of exoscale*anti*affinity_group (IDs) to attach to the instance (may only be set at creation time).\n"
        },
        "blockStorageVolumeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*block*storage_volume (ID) to attach to the instance.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The instance creation date.\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "❗ A deploy target ID.\n"
        },
        "destroyProtected": {
          "type": "boolean",
          "description": "Mark the instance as protected, the Exoscale API will refuse to delete the instance until the protection is removed (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The instance disk size (GiB; at least <span pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\">`10`</span>). Can not be decreased after creation. **WARNING**: updating this attribute stops/restarts the instance.\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*elastic*ip (IDs) to attach to the instance.\n"
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Indicates whether secure boot is enabled on the instance.\n"
        },
        "enableTpm": {
          "type": "boolean",
          "description": "Indicates whether TPM is enabled on the instance.\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 on the instance (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "ipv6Address": {
          "type": "string",
          "description": "The instance (main network interface) IPv6 address (if enabled).\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "macAddress": {
          "type": "string",
          "description": "MAC address\n"
        },
        "name": {
          "type": "string",
          "description": "The compute instance name.\n"
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FComputeInstanceNetworkInterface:ComputeInstanceNetworkInterface"
          },
          "description": "Private network interfaces (may be specified multiple times). Structure is documented below.\n"
        },
        "private": {
          "type": "boolean",
          "description": "Whether the instance is private (no public IP addresses; default: false)\n"
        },
        "privateNetworkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of private networks (IDs) attached to the instance. Please use the `network_interface.*.network_id` argument instead.\n",
          "deprecationMessage": "Use the<span pulumi-lang-nodejs=\" networkInterface \" pulumi-lang-dotnet=\" NetworkInterface \" pulumi-lang-go=\" networkInterface \" pulumi-lang-python=\" network_interface \" pulumi-lang-yaml=\" networkInterface \" pulumi-lang-java=\" networkInterface \"> network_interface </span>block instead."
        },
        "publicIpAddress": {
          "type": "string",
          "description": "The instance (main network interface) IPv4 address.\n"
        },
        "reverseDns": {
          "type": "string",
          "description": "Domain name for reverse DNS record.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs) to attach to the instance.\n"
        },
        "sshKey": {
          "type": "string",
          "description": "The exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"> ssh_keys </span>instead"
        },
        "sshKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n"
        },
        "state": {
          "type": "string",
          "description": "The instance state (<span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span> or <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>; default: <span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span>).\n"
        },
        "templateId": {
          "type": "string",
          "description": "❗ The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the instance.\n"
        },
        "type": {
          "type": "string",
          "description": "The instance type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types). **WARNING**: updating this attribute stops/restarts the instance.\n"
        },
        "userData": {
          "type": "string",
          "description": "[cloud-init](https://cloudinit.readthedocs.io/) configuration.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "diskSize",
        "ipv6Address",
        "macAddress",
        "name",
        "privateNetworkIds",
        "publicIpAddress",
        "state",
        "templateId",
        "type",
        "zone"
      ],
      "inputProperties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of exoscale*anti*affinity_group (IDs) to attach to the instance (may only be set at creation time).\n",
          "willReplaceOnChanges": true
        },
        "blockStorageVolumeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*block*storage_volume (ID) to attach to the instance.\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "❗ A deploy target ID.\n",
          "willReplaceOnChanges": true
        },
        "destroyProtected": {
          "type": "boolean",
          "description": "Mark the instance as protected, the Exoscale API will refuse to delete the instance until the protection is removed (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The instance disk size (GiB; at least <span pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\">`10`</span>). Can not be decreased after creation. **WARNING**: updating this attribute stops/restarts the instance.\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*elastic*ip (IDs) to attach to the instance.\n"
        },
        "enableSecureBoot": {
          "type": "boolean",
          "description": "Indicates whether secure boot is enabled on the instance.\n",
          "willReplaceOnChanges": true
        },
        "enableTpm": {
          "type": "boolean",
          "description": "Indicates whether TPM is enabled on the instance.\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 on the instance (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The compute instance name.\n"
        },
        "networkInterfaces": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FComputeInstanceNetworkInterface:ComputeInstanceNetworkInterface"
          },
          "description": "Private network interfaces (may be specified multiple times). Structure is documented below.\n"
        },
        "private": {
          "type": "boolean",
          "description": "Whether the instance is private (no public IP addresses; default: false)\n"
        },
        "reverseDns": {
          "type": "string",
          "description": "Domain name for reverse DNS record.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs) to attach to the instance.\n"
        },
        "sshKey": {
          "type": "string",
          "description": "The exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"> ssh_keys </span>instead",
          "willReplaceOnChanges": true
        },
        "sshKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n",
          "willReplaceOnChanges": true
        },
        "state": {
          "type": "string",
          "description": "The instance state (<span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span> or <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>; default: <span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span>).\n"
        },
        "templateId": {
          "type": "string",
          "description": "❗ The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the instance.\n",
          "willReplaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The instance type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types). **WARNING**: updating this attribute stops/restarts the instance.\n"
        },
        "userData": {
          "type": "string",
          "description": "[cloud-init](https://cloudinit.readthedocs.io/) configuration.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "diskSize",
        "templateId",
        "type",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ComputeInstance resources.\n",
        "properties": {
          "antiAffinityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "❗ A list of exoscale*anti*affinity_group (IDs) to attach to the instance (may only be set at creation time).\n",
            "willReplaceOnChanges": true
          },
          "blockStorageVolumeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*block*storage_volume (ID) to attach to the instance.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "The instance creation date.\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "❗ A deploy target ID.\n",
            "willReplaceOnChanges": true
          },
          "destroyProtected": {
            "type": "boolean",
            "description": "Mark the instance as protected, the Exoscale API will refuse to delete the instance until the protection is removed (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The instance disk size (GiB; at least <span pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\">`10`</span>). Can not be decreased after creation. **WARNING**: updating this attribute stops/restarts the instance.\n"
          },
          "elasticIpIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*elastic*ip (IDs) to attach to the instance.\n"
          },
          "enableSecureBoot": {
            "type": "boolean",
            "description": "Indicates whether secure boot is enabled on the instance.\n",
            "willReplaceOnChanges": true
          },
          "enableTpm": {
            "type": "boolean",
            "description": "Indicates whether TPM is enabled on the instance.\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Enable IPv6 on the instance (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
          },
          "ipv6Address": {
            "type": "string",
            "description": "The instance (main network interface) IPv6 address (if enabled).\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "macAddress": {
            "type": "string",
            "description": "MAC address\n"
          },
          "name": {
            "type": "string",
            "description": "The compute instance name.\n"
          },
          "networkInterfaces": {
            "type": "array",
            "items": {
              "$ref": "#/types/exoscale:index%2FComputeInstanceNetworkInterface:ComputeInstanceNetworkInterface"
            },
            "description": "Private network interfaces (may be specified multiple times). Structure is documented below.\n"
          },
          "private": {
            "type": "boolean",
            "description": "Whether the instance is private (no public IP addresses; default: false)\n"
          },
          "privateNetworkIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of private networks (IDs) attached to the instance. Please use the `network_interface.*.network_id` argument instead.\n",
            "deprecationMessage": "Use the<span pulumi-lang-nodejs=\" networkInterface \" pulumi-lang-dotnet=\" NetworkInterface \" pulumi-lang-go=\" networkInterface \" pulumi-lang-python=\" network_interface \" pulumi-lang-yaml=\" networkInterface \" pulumi-lang-java=\" networkInterface \"> network_interface </span>block instead."
          },
          "publicIpAddress": {
            "type": "string",
            "description": "The instance (main network interface) IPv4 address.\n"
          },
          "reverseDns": {
            "type": "string",
            "description": "Domain name for reverse DNS record.\n"
          },
          "securityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*security*group (IDs) to attach to the instance.\n"
          },
          "sshKey": {
            "type": "string",
            "description": "The exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n",
            "deprecationMessage": "Use<span pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"> ssh_keys </span>instead",
            "willReplaceOnChanges": true
          },
          "sshKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of exoscale*ssh*key (name) to authorize in the instance (may only be set at creation time).\n",
            "willReplaceOnChanges": true
          },
          "state": {
            "type": "string",
            "description": "The instance state (<span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span> or <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>; default: <span pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\">`running`</span>).\n"
          },
          "templateId": {
            "type": "string",
            "description": "❗ The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the instance.\n",
            "willReplaceOnChanges": true
          },
          "type": {
            "type": "string",
            "description": "The instance type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types). **WARNING**: updating this attribute stops/restarts the instance.\n"
          },
          "userData": {
            "type": "string",
            "description": "[cloud-init](https://cloudinit.readthedocs.io/) configuration.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/database:Database": {
      "description": "❗This resource is deprecated and renamed to exoscale_dbaas, do not use it to create new resources❗\nManage Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myDatabase = new exoscale.Database(\"my_database\", {\n    zone: \"ch-gva-2\",\n    name: \"my-database\",\n    type: \"pg\",\n    plan: \"startup-4\",\n    maintenanceDow: \"sunday\",\n    maintenanceTime: \"23:00:00\",\n    terminationProtection: true,\n    pg: {\n        version: \"13\",\n        backupSchedule: \"04:00\",\n        ipFilters: [\n            \"1.2.3.4/32\",\n            \"5.6.7.8/32\",\n        ],\n        pgSettings: JSON.stringify({\n            timezone: \"Europe/Zurich\",\n        }),\n    },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_exoscale as exoscale\n\nmy_database = exoscale.Database(\"my_database\",\n    zone=\"ch-gva-2\",\n    name=\"my-database\",\n    type=\"pg\",\n    plan=\"startup-4\",\n    maintenance_dow=\"sunday\",\n    maintenance_time=\"23:00:00\",\n    termination_protection=True,\n    pg={\n        \"version\": \"13\",\n        \"backup_schedule\": \"04:00\",\n        \"ip_filters\": [\n            \"1.2.3.4/32\",\n            \"5.6.7.8/32\",\n        ],\n        \"pg_settings\": json.dumps({\n            \"timezone\": \"Europe/Zurich\",\n        }),\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myDatabase = new Exoscale.Database(\"my_database\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-database\",\n        Type = \"pg\",\n        Plan = \"startup-4\",\n        MaintenanceDow = \"sunday\",\n        MaintenanceTime = \"23:00:00\",\n        TerminationProtection = true,\n        Pg = new Exoscale.Inputs.DatabasePgArgs\n        {\n            Version = \"13\",\n            BackupSchedule = \"04:00\",\n            IpFilters = new[]\n            {\n                \"1.2.3.4/32\",\n                \"5.6.7.8/32\",\n            },\n            PgSettings = JsonSerializer.Serialize(new Dictionary<string, object?>\n            {\n                [\"timezone\"] = \"Europe/Zurich\",\n            }),\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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"timezone\": \"Europe/Zurich\",\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 = exoscale.NewDatabase(ctx, \"my_database\", &exoscale.DatabaseArgs{\n\t\t\tZone:                  pulumi.String(\"ch-gva-2\"),\n\t\t\tName:                  pulumi.String(\"my-database\"),\n\t\t\tType:                  pulumi.String(\"pg\"),\n\t\t\tPlan:                  pulumi.String(\"startup-4\"),\n\t\t\tMaintenanceDow:        pulumi.String(\"sunday\"),\n\t\t\tMaintenanceTime:       pulumi.String(\"23:00:00\"),\n\t\t\tTerminationProtection: pulumi.Bool(true),\n\t\t\tPg: &exoscale.DatabasePgArgs{\n\t\t\t\tVersion:        pulumi.String(\"13\"),\n\t\t\t\tBackupSchedule: pulumi.String(\"04:00\"),\n\t\t\t\tIpFilters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tpulumi.String(\"5.6.7.8/32\"),\n\t\t\t\t},\n\t\t\t\tPgSettings: pulumi.String(json0),\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.pulumiverse.exoscale.Database;\nimport com.pulumiverse.exoscale.DatabaseArgs;\nimport com.pulumi.exoscale.inputs.DatabasePgArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDatabase = new Database(\"myDatabase\", DatabaseArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-database\")\n            .type(\"pg\")\n            .plan(\"startup-4\")\n            .maintenanceDow(\"sunday\")\n            .maintenanceTime(\"23:00:00\")\n            .terminationProtection(true)\n            .pg(DatabasePgArgs.builder()\n                .version(\"13\")\n                .backupSchedule(\"04:00\")\n                .ipFilters(                \n                    \"1.2.3.4/32\",\n                    \"5.6.7.8/32\")\n                .pgSettings(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"timezone\", \"Europe/Zurich\")\n                    )))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDatabase:\n    type: exoscale:Database\n    name: my_database\n    properties:\n      zone: ch-gva-2\n      name: my-database\n      type: pg\n      plan: startup-4\n      maintenanceDow: sunday\n      maintenanceTime: 23:00:00\n      terminationProtection: true\n      pg:\n        version: '13'\n        backupSchedule: 04:00\n        ipFilters:\n          - 1.2.3.4/32\n          - 5.6.7.8/32\n        pgSettings:\n          fn::toJSON:\n            timezone: Europe/Zurich\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing database service may be imported by `<name>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/database:Database \\ \n```\n\n  exoscale_database.my_database \\\n\n  my-database@ch-gva-2\n\n",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "CA Certificate required to reach a DBaaS service through a TLS-protected connection.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The creation date of the database service.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The disk size of the database service.\n"
        },
        "grafana": {
          "$ref": "#/types/exoscale:index%2FDatabaseGrafana:DatabaseGrafana",
          "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
        },
        "kafka": {
          "$ref": "#/types/exoscale:index%2FDatabaseKafka:DatabaseKafka",
          "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
        },
        "maintenanceDow": {
          "type": "string",
          "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
        },
        "maintenanceTime": {
          "type": "string",
          "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
        },
        "mysql": {
          "$ref": "#/types/exoscale:index%2FDatabaseMysql:DatabaseMysql",
          "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "nodeCpus": {
          "type": "integer",
          "description": "The number of CPUs of the database service.\n"
        },
        "nodeMemory": {
          "type": "integer",
          "description": "The amount of memory of the database service.\n"
        },
        "nodes": {
          "type": "integer",
          "description": "The number of nodes of the database service.\n"
        },
        "opensearch": {
          "$ref": "#/types/exoscale:index%2FDatabaseOpensearch:DatabaseOpensearch",
          "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
        },
        "pg": {
          "$ref": "#/types/exoscale:index%2FDatabasePg:DatabasePg",
          "description": "*pg* database service type specific arguments. Structure is documented below.\n"
        },
        "plan": {
          "type": "string",
          "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
        },
        "state": {
          "type": "string",
          "description": "The current state of the database service.\n"
        },
        "terminationProtection": {
          "type": "boolean",
          "description": "The database service protection boolean flag against termination/power-off.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDatabaseTimeouts:DatabaseTimeouts"
        },
        "type": {
          "type": "string",
          "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
        },
        "updatedAt": {
          "type": "string",
          "description": "The date of the latest database service update.\n"
        },
        "valkey": {
          "$ref": "#/types/exoscale:index%2FDatabaseValkey:DatabaseValkey",
          "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "createdAt",
        "diskSize",
        "maintenanceDow",
        "maintenanceTime",
        "name",
        "nodeCpus",
        "nodeMemory",
        "nodes",
        "plan",
        "state",
        "terminationProtection",
        "type",
        "updatedAt",
        "zone"
      ],
      "inputProperties": {
        "grafana": {
          "$ref": "#/types/exoscale:index%2FDatabaseGrafana:DatabaseGrafana",
          "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
        },
        "kafka": {
          "$ref": "#/types/exoscale:index%2FDatabaseKafka:DatabaseKafka",
          "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
        },
        "maintenanceDow": {
          "type": "string",
          "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
        },
        "maintenanceTime": {
          "type": "string",
          "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
        },
        "mysql": {
          "$ref": "#/types/exoscale:index%2FDatabaseMysql:DatabaseMysql",
          "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "opensearch": {
          "$ref": "#/types/exoscale:index%2FDatabaseOpensearch:DatabaseOpensearch",
          "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
        },
        "pg": {
          "$ref": "#/types/exoscale:index%2FDatabasePg:DatabasePg",
          "description": "*pg* database service type specific arguments. Structure is documented below.\n"
        },
        "plan": {
          "type": "string",
          "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
        },
        "terminationProtection": {
          "type": "boolean",
          "description": "The database service protection boolean flag against termination/power-off.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDatabaseTimeouts:DatabaseTimeouts"
        },
        "type": {
          "type": "string",
          "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
        },
        "valkey": {
          "$ref": "#/types/exoscale:index%2FDatabaseValkey:DatabaseValkey",
          "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "plan",
        "type",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Database resources.\n",
        "properties": {
          "caCertificate": {
            "type": "string",
            "description": "CA Certificate required to reach a DBaaS service through a TLS-protected connection.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "The creation date of the database service.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The disk size of the database service.\n"
          },
          "grafana": {
            "$ref": "#/types/exoscale:index%2FDatabaseGrafana:DatabaseGrafana",
            "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
          },
          "kafka": {
            "$ref": "#/types/exoscale:index%2FDatabaseKafka:DatabaseKafka",
            "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
          },
          "maintenanceDow": {
            "type": "string",
            "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
          },
          "maintenanceTime": {
            "type": "string",
            "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
          },
          "mysql": {
            "$ref": "#/types/exoscale:index%2FDatabaseMysql:DatabaseMysql",
            "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
          },
          "name": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "nodeCpus": {
            "type": "integer",
            "description": "The number of CPUs of the database service.\n"
          },
          "nodeMemory": {
            "type": "integer",
            "description": "The amount of memory of the database service.\n"
          },
          "nodes": {
            "type": "integer",
            "description": "The number of nodes of the database service.\n"
          },
          "opensearch": {
            "$ref": "#/types/exoscale:index%2FDatabaseOpensearch:DatabaseOpensearch",
            "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
          },
          "pg": {
            "$ref": "#/types/exoscale:index%2FDatabasePg:DatabasePg",
            "description": "*pg* database service type specific arguments. Structure is documented below.\n"
          },
          "plan": {
            "type": "string",
            "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
          },
          "state": {
            "type": "string",
            "description": "The current state of the database service.\n"
          },
          "terminationProtection": {
            "type": "boolean",
            "description": "The database service protection boolean flag against termination/power-off.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDatabaseTimeouts:DatabaseTimeouts"
          },
          "type": {
            "type": "string",
            "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date of the latest database service update.\n"
          },
          "valkey": {
            "$ref": "#/types/exoscale:index%2FDatabaseValkey:DatabaseValkey",
            "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaas:Dbaas": {
      "description": "Manage Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "caCertificate": {
          "type": "string",
          "description": "CA Certificate required to reach a DBaaS service through a TLS-protected connection.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The creation date of the database service.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The disk size of the database service.\n"
        },
        "grafana": {
          "$ref": "#/types/exoscale:index%2FDbaasGrafana:DbaasGrafana",
          "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
        },
        "kafka": {
          "$ref": "#/types/exoscale:index%2FDbaasKafka:DbaasKafka",
          "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
        },
        "maintenanceDow": {
          "type": "string",
          "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
        },
        "maintenanceTime": {
          "type": "string",
          "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
        },
        "mysql": {
          "$ref": "#/types/exoscale:index%2FDbaasMysql:DbaasMysql",
          "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "nodeCpus": {
          "type": "integer",
          "description": "The number of CPUs of the database service.\n"
        },
        "nodeMemory": {
          "type": "integer",
          "description": "The amount of memory of the database service.\n"
        },
        "nodes": {
          "type": "integer",
          "description": "The number of nodes of the database service.\n"
        },
        "opensearch": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearch:DbaasOpensearch",
          "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
        },
        "pg": {
          "$ref": "#/types/exoscale:index%2FDbaasPg:DbaasPg",
          "description": "*pg* database service type specific arguments. Structure is documented below.\n"
        },
        "plan": {
          "type": "string",
          "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
        },
        "state": {
          "type": "string",
          "description": "The current state of the database service.\n"
        },
        "terminationProtection": {
          "type": "boolean",
          "description": "The database service protection boolean flag against termination/power-off.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasTimeouts:DbaasTimeouts"
        },
        "type": {
          "type": "string",
          "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
        },
        "updatedAt": {
          "type": "string",
          "description": "The date of the latest database service update.\n"
        },
        "valkey": {
          "$ref": "#/types/exoscale:index%2FDbaasValkey:DbaasValkey",
          "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "caCertificate",
        "createdAt",
        "diskSize",
        "maintenanceDow",
        "maintenanceTime",
        "name",
        "nodeCpus",
        "nodeMemory",
        "nodes",
        "plan",
        "state",
        "terminationProtection",
        "type",
        "updatedAt",
        "zone"
      ],
      "inputProperties": {
        "grafana": {
          "$ref": "#/types/exoscale:index%2FDbaasGrafana:DbaasGrafana",
          "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
        },
        "kafka": {
          "$ref": "#/types/exoscale:index%2FDbaasKafka:DbaasKafka",
          "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
        },
        "maintenanceDow": {
          "type": "string",
          "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
        },
        "maintenanceTime": {
          "type": "string",
          "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
        },
        "mysql": {
          "$ref": "#/types/exoscale:index%2FDbaasMysql:DbaasMysql",
          "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "opensearch": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearch:DbaasOpensearch",
          "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
        },
        "pg": {
          "$ref": "#/types/exoscale:index%2FDbaasPg:DbaasPg",
          "description": "*pg* database service type specific arguments. Structure is documented below.\n"
        },
        "plan": {
          "type": "string",
          "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
        },
        "terminationProtection": {
          "type": "boolean",
          "description": "The database service protection boolean flag against termination/power-off.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasTimeouts:DbaasTimeouts"
        },
        "type": {
          "type": "string",
          "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
        },
        "valkey": {
          "$ref": "#/types/exoscale:index%2FDbaasValkey:DbaasValkey",
          "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "plan",
        "type",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Dbaas resources.\n",
        "properties": {
          "caCertificate": {
            "type": "string",
            "description": "CA Certificate required to reach a DBaaS service through a TLS-protected connection.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "The creation date of the database service.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The disk size of the database service.\n"
          },
          "grafana": {
            "$ref": "#/types/exoscale:index%2FDbaasGrafana:DbaasGrafana",
            "description": "*grafana* database service type specific arguments. Structure is documented below.\n"
          },
          "kafka": {
            "$ref": "#/types/exoscale:index%2FDbaasKafka:DbaasKafka",
            "description": "*kafka* database service type specific arguments. Structure is documented below.\n"
          },
          "maintenanceDow": {
            "type": "string",
            "description": "The day of week to perform the automated database service maintenance (<span pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\">`never`</span>, <span pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\">`monday`</span>, <span pulumi-lang-nodejs=\"`tuesday`\" pulumi-lang-dotnet=\"`Tuesday`\" pulumi-lang-go=\"`tuesday`\" pulumi-lang-python=\"`tuesday`\" pulumi-lang-yaml=\"`tuesday`\" pulumi-lang-java=\"`tuesday`\">`tuesday`</span>, <span pulumi-lang-nodejs=\"`wednesday`\" pulumi-lang-dotnet=\"`Wednesday`\" pulumi-lang-go=\"`wednesday`\" pulumi-lang-python=\"`wednesday`\" pulumi-lang-yaml=\"`wednesday`\" pulumi-lang-java=\"`wednesday`\">`wednesday`</span>, <span pulumi-lang-nodejs=\"`thursday`\" pulumi-lang-dotnet=\"`Thursday`\" pulumi-lang-go=\"`thursday`\" pulumi-lang-python=\"`thursday`\" pulumi-lang-yaml=\"`thursday`\" pulumi-lang-java=\"`thursday`\">`thursday`</span>, <span pulumi-lang-nodejs=\"`friday`\" pulumi-lang-dotnet=\"`Friday`\" pulumi-lang-go=\"`friday`\" pulumi-lang-python=\"`friday`\" pulumi-lang-yaml=\"`friday`\" pulumi-lang-java=\"`friday`\">`friday`</span>, <span pulumi-lang-nodejs=\"`saturday`\" pulumi-lang-dotnet=\"`Saturday`\" pulumi-lang-go=\"`saturday`\" pulumi-lang-python=\"`saturday`\" pulumi-lang-yaml=\"`saturday`\" pulumi-lang-java=\"`saturday`\">`saturday`</span>, <span pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\">`sunday`</span>).\n"
          },
          "maintenanceTime": {
            "type": "string",
            "description": "The time of day to perform the automated database service maintenance (`HH:MM:SS`)\n"
          },
          "mysql": {
            "$ref": "#/types/exoscale:index%2FDbaasMysql:DbaasMysql",
            "description": "*mysql* database service type specific arguments. Structure is documented below.\n"
          },
          "name": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "nodeCpus": {
            "type": "integer",
            "description": "The number of CPUs of the database service.\n"
          },
          "nodeMemory": {
            "type": "integer",
            "description": "The amount of memory of the database service.\n"
          },
          "nodes": {
            "type": "integer",
            "description": "The number of nodes of the database service.\n"
          },
          "opensearch": {
            "$ref": "#/types/exoscale:index%2FDbaasOpensearch:DbaasOpensearch",
            "description": "*opensearch* database service type specific arguments. Structure is documented below.\n"
          },
          "pg": {
            "$ref": "#/types/exoscale:index%2FDbaasPg:DbaasPg",
            "description": "*pg* database service type specific arguments. Structure is documented below.\n"
          },
          "plan": {
            "type": "string",
            "description": "The plan of the database service (use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo dbaas type show <TYPE> --plans` - for reference).\n"
          },
          "state": {
            "type": "string",
            "description": "The current state of the database service.\n"
          },
          "terminationProtection": {
            "type": "boolean",
            "description": "The database service protection boolean flag against termination/power-off.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasTimeouts:DbaasTimeouts"
          },
          "type": {
            "type": "string",
            "description": "❗ The type of the database service (<span pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\">`kafka`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\">`opensearch`</span>, <span pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\">`pg`</span>, <span pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\">`valkey`</span>, <span pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\">`grafana`</span>).\n"
          },
          "updatedAt": {
            "type": "string",
            "description": "The date of the latest database service update.\n"
          },
          "valkey": {
            "$ref": "#/types/exoscale:index%2FDbaasValkey:DbaasValkey",
            "description": "*valkey* database service type specific arguments. Structure is documented below.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasKafkaUser:DbaasKafkaUser": {
      "description": "Manage service users for a Kafka Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "accessCert": {
          "type": "string",
          "description": "Access certificate for the user.\n",
          "secret": true
        },
        "accessCertExpiry": {
          "type": "string",
          "description": "Access certificate expiry date.\n"
        },
        "accessKey": {
          "type": "string",
          "description": "Access certificate key for the user.\n",
          "secret": true
        },
        "password": {
          "type": "string",
          "description": "The password of the service user.\n",
          "secret": true
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasKafkaUserTimeouts:DbaasKafkaUserTimeouts"
        },
        "type": {
          "type": "string",
          "description": "The type of the service user.\n"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "accessCert",
        "accessCertExpiry",
        "accessKey",
        "password",
        "service",
        "type",
        "username",
        "zone"
      ],
      "inputProperties": {
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasKafkaUserTimeouts:DbaasKafkaUserTimeouts"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "service",
        "username",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasKafkaUser resources.\n",
        "properties": {
          "accessCert": {
            "type": "string",
            "description": "Access certificate for the user.\n",
            "secret": true
          },
          "accessCertExpiry": {
            "type": "string",
            "description": "Access certificate expiry date.\n"
          },
          "accessKey": {
            "type": "string",
            "description": "Access certificate key for the user.\n",
            "secret": true
          },
          "password": {
            "type": "string",
            "description": "The password of the service user.\n",
            "secret": true
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasKafkaUserTimeouts:DbaasKafkaUserTimeouts"
          },
          "type": {
            "type": "string",
            "description": "The type of the service user.\n"
          },
          "username": {
            "type": "string",
            "description": "❗ The name of the user for this service.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasMysqlDatabase:DbaasMysqlDatabase": {
      "description": "❗ Manage service database for a PostgreSQL Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "databaseName": {
          "type": "string",
          "description": "❗ The name of the database for this service.\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasMysqlDatabaseTimeouts:DbaasMysqlDatabaseTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "databaseName",
        "service",
        "zone"
      ],
      "inputProperties": {
        "databaseName": {
          "type": "string",
          "description": "❗ The name of the database for this service.\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasMysqlDatabaseTimeouts:DbaasMysqlDatabaseTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "databaseName",
        "service",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasMysqlDatabase resources.\n",
        "properties": {
          "databaseName": {
            "type": "string",
            "description": "❗ The name of the database for this service.\n"
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasMysqlDatabaseTimeouts:DbaasMysqlDatabaseTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasMysqlUser:DbaasMysqlUser": {
      "description": "Manage service users for MySQL Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "authentication": {
          "type": "string",
          "description": "❗ Authentication details. The possible values are <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, <span pulumi-lang-nodejs=\"`cachingSha2Password`\" pulumi-lang-dotnet=\"`CachingSha2Password`\" pulumi-lang-go=\"`cachingSha2Password`\" pulumi-lang-python=\"`caching_sha2_password`\" pulumi-lang-yaml=\"`cachingSha2Password`\" pulumi-lang-java=\"`cachingSha2Password`\">`caching_sha2_password`</span> and <span pulumi-lang-nodejs=\"`mysqlNativePassword`\" pulumi-lang-dotnet=\"`MysqlNativePassword`\" pulumi-lang-go=\"`mysqlNativePassword`\" pulumi-lang-python=\"`mysql_native_password`\" pulumi-lang-yaml=\"`mysqlNativePassword`\" pulumi-lang-java=\"`mysqlNativePassword`\">`mysql_native_password`</span>.\n"
        },
        "password": {
          "type": "string",
          "description": "The password of the service user.\n",
          "secret": true
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasMysqlUserTimeouts:DbaasMysqlUserTimeouts"
        },
        "type": {
          "type": "string",
          "description": "The type of the service user.\n"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "authentication",
        "password",
        "service",
        "type",
        "username",
        "zone"
      ],
      "inputProperties": {
        "authentication": {
          "type": "string",
          "description": "❗ Authentication details. The possible values are <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, <span pulumi-lang-nodejs=\"`cachingSha2Password`\" pulumi-lang-dotnet=\"`CachingSha2Password`\" pulumi-lang-go=\"`cachingSha2Password`\" pulumi-lang-python=\"`caching_sha2_password`\" pulumi-lang-yaml=\"`cachingSha2Password`\" pulumi-lang-java=\"`cachingSha2Password`\">`caching_sha2_password`</span> and <span pulumi-lang-nodejs=\"`mysqlNativePassword`\" pulumi-lang-dotnet=\"`MysqlNativePassword`\" pulumi-lang-go=\"`mysqlNativePassword`\" pulumi-lang-python=\"`mysql_native_password`\" pulumi-lang-yaml=\"`mysqlNativePassword`\" pulumi-lang-java=\"`mysqlNativePassword`\">`mysql_native_password`</span>.\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasMysqlUserTimeouts:DbaasMysqlUserTimeouts"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "service",
        "username",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasMysqlUser resources.\n",
        "properties": {
          "authentication": {
            "type": "string",
            "description": "❗ Authentication details. The possible values are <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, <span pulumi-lang-nodejs=\"`cachingSha2Password`\" pulumi-lang-dotnet=\"`CachingSha2Password`\" pulumi-lang-go=\"`cachingSha2Password`\" pulumi-lang-python=\"`caching_sha2_password`\" pulumi-lang-yaml=\"`cachingSha2Password`\" pulumi-lang-java=\"`cachingSha2Password`\">`caching_sha2_password`</span> and <span pulumi-lang-nodejs=\"`mysqlNativePassword`\" pulumi-lang-dotnet=\"`MysqlNativePassword`\" pulumi-lang-go=\"`mysqlNativePassword`\" pulumi-lang-python=\"`mysql_native_password`\" pulumi-lang-yaml=\"`mysqlNativePassword`\" pulumi-lang-java=\"`mysqlNativePassword`\">`mysql_native_password`</span>.\n"
          },
          "password": {
            "type": "string",
            "description": "The password of the service user.\n",
            "secret": true
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasMysqlUserTimeouts:DbaasMysqlUserTimeouts"
          },
          "type": {
            "type": "string",
            "description": "The type of the service user.\n"
          },
          "username": {
            "type": "string",
            "description": "❗ The name of the user for this service.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasOpensearchUser:DbaasOpensearchUser": {
      "description": "Manage service users for an Opensearch Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "password": {
          "type": "string",
          "description": "The password of the service user.\n",
          "secret": true
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearchUserTimeouts:DbaasOpensearchUserTimeouts"
        },
        "type": {
          "type": "string",
          "description": "The type of the service user.\n"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "password",
        "service",
        "type",
        "username",
        "zone"
      ],
      "inputProperties": {
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasOpensearchUserTimeouts:DbaasOpensearchUserTimeouts"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "service",
        "username",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasOpensearchUser resources.\n",
        "properties": {
          "password": {
            "type": "string",
            "description": "The password of the service user.\n",
            "secret": true
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasOpensearchUserTimeouts:DbaasOpensearchUserTimeouts"
          },
          "type": {
            "type": "string",
            "description": "The type of the service user.\n"
          },
          "username": {
            "type": "string",
            "description": "❗ The name of the user for this service.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasPgDatabase:DbaasPgDatabase": {
      "description": "❗ Manage service database for a PostgreSQL Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "databaseName": {
          "type": "string",
          "description": "❗ The name of the database for this service.\n"
        },
        "lcCollate": {
          "type": "string",
          "description": "Default string sort order (LC_COLLATE) for PostgreSQL database\n"
        },
        "lcCtype": {
          "type": "string",
          "description": "Default character classification (LC_CTYPE) for PostgreSQL database\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasPgDatabaseTimeouts:DbaasPgDatabaseTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "databaseName",
        "service",
        "zone"
      ],
      "inputProperties": {
        "databaseName": {
          "type": "string",
          "description": "❗ The name of the database for this service.\n"
        },
        "lcCollate": {
          "type": "string",
          "description": "Default string sort order (LC_COLLATE) for PostgreSQL database\n"
        },
        "lcCtype": {
          "type": "string",
          "description": "Default character classification (LC_CTYPE) for PostgreSQL database\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasPgDatabaseTimeouts:DbaasPgDatabaseTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "databaseName",
        "service",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasPgDatabase resources.\n",
        "properties": {
          "databaseName": {
            "type": "string",
            "description": "❗ The name of the database for this service.\n"
          },
          "lcCollate": {
            "type": "string",
            "description": "Default string sort order (LC_COLLATE) for PostgreSQL database\n"
          },
          "lcCtype": {
            "type": "string",
            "description": "Default character classification (LC_CTYPE) for PostgreSQL database\n"
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasPgDatabaseTimeouts:DbaasPgDatabaseTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/dbaasPgUser:DbaasPgUser": {
      "description": "❗ Manage service users for a PostgreSQL Exoscale [Database Services (DBaaS)](https://community.exoscale.com/documentation/dbaas/).\n",
      "properties": {
        "allowReplication": {
          "type": "boolean",
          "description": "Allows replication\n"
        },
        "password": {
          "type": "string",
          "description": "The password of the service user.\n",
          "secret": true
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasPgUserTimeouts:DbaasPgUserTimeouts"
        },
        "type": {
          "type": "string",
          "description": "The type of the service user.\n"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "allowReplication",
        "password",
        "service",
        "type",
        "username",
        "zone"
      ],
      "inputProperties": {
        "allowReplication": {
          "type": "boolean",
          "description": "Allows replication\n"
        },
        "service": {
          "type": "string",
          "description": "❗ The name of the database service.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FDbaasPgUserTimeouts:DbaasPgUserTimeouts"
        },
        "username": {
          "type": "string",
          "description": "❗ The name of the user for this service.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "service",
        "username",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DbaasPgUser resources.\n",
        "properties": {
          "allowReplication": {
            "type": "boolean",
            "description": "Allows replication\n"
          },
          "password": {
            "type": "string",
            "description": "The password of the service user.\n",
            "secret": true
          },
          "service": {
            "type": "string",
            "description": "❗ The name of the database service.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FDbaasPgUserTimeouts:DbaasPgUserTimeouts"
          },
          "type": {
            "type": "string",
            "description": "The type of the service user.\n"
          },
          "username": {
            "type": "string",
            "description": "❗ The name of the user for this service.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/domain:Domain": {
      "description": "Manage Exoscale [DNS](https://community.exoscale.com/product/networking/dns/) Domains.\n\nCorresponding data source: exoscale_domain.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myDomain = new exoscale.Domain(\"my_domain\", {name: \"my.domain\"});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_domain = exoscale.Domain(\"my_domain\", name=\"my.domain\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myDomain = new Exoscale.Domain(\"my_domain\", new()\n    {\n        Name = \"my.domain\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewDomain(ctx, \"my_domain\", &exoscale.DomainArgs{\n\t\t\tName: pulumi.String(\"my.domain\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.Domain;\nimport com.pulumiverse.exoscale.DomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDomain = new Domain(\"myDomain\", DomainArgs.builder()\n            .name(\"my.domain\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDomain:\n    type: exoscale:Domain\n    name: my_domain\n    properties:\n      name: my.domain\n```\n<!--End PulumiCodeChooser -->\n\nNext step is to attach exoscale_domain_record(s) to the domain.\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing DNS domain may be imported by `ID`:\n\n```sh\n$ pulumi import exoscale:index/domain:Domain \\ \n```\n\n  exoscale_domain.my_domain \\\n\n  89083a5c-b648-474a-0000-0000000f67bd\n\n",
      "properties": {
        "autoRenew": {
          "type": "boolean",
          "description": "Whether the DNS domain has automatic renewal enabled (boolean).\n",
          "deprecationMessage": "Not used, will be removed in the future"
        },
        "expiresOn": {
          "type": "string",
          "description": "The domain expiration date, if known.\n",
          "deprecationMessage": "Not used, will be removed in the future"
        },
        "name": {
          "type": "string",
          "description": "❗ The DNS domain name.\n"
        },
        "state": {
          "type": "string",
          "description": "The domain state.\n",
          "deprecationMessage": "Not used, will be removed in the future"
        },
        "token": {
          "type": "string",
          "description": "A security token that can be used as an alternative way to manage DNS domains via the Exoscale API.\n",
          "deprecationMessage": "Not used, will be removed in the future"
        }
      },
      "type": "object",
      "required": [
        "autoRenew",
        "expiresOn",
        "name",
        "state",
        "token"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "❗ The DNS domain name.\n",
          "willReplaceOnChanges": true
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Domain resources.\n",
        "properties": {
          "autoRenew": {
            "type": "boolean",
            "description": "Whether the DNS domain has automatic renewal enabled (boolean).\n",
            "deprecationMessage": "Not used, will be removed in the future"
          },
          "expiresOn": {
            "type": "string",
            "description": "The domain expiration date, if known.\n",
            "deprecationMessage": "Not used, will be removed in the future"
          },
          "name": {
            "type": "string",
            "description": "❗ The DNS domain name.\n",
            "willReplaceOnChanges": true
          },
          "state": {
            "type": "string",
            "description": "The domain state.\n",
            "deprecationMessage": "Not used, will be removed in the future"
          },
          "token": {
            "type": "string",
            "description": "A security token that can be used as an alternative way to manage DNS domains via the Exoscale API.\n",
            "deprecationMessage": "Not used, will be removed in the future"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/domainRecord:DomainRecord": {
      "description": "Manage Exoscale [DNS](https://community.exoscale.com/product/networking/dns/) Domain Records.\n\nCorresponding data source: exoscale_domain_record.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myDomain = new exoscale.Domain(\"my_domain\", {name: \"example.net\"});\nconst myHost = new exoscale.DomainRecord(\"my_host\", {\n    domain: myDomain.id,\n    name: \"my-host\",\n    recordType: \"A\",\n    content: \"1.2.3.4\",\n});\nconst myHostAlias = new exoscale.DomainRecord(\"my_host_alias\", {\n    domain: myDomain.id,\n    name: \"my-host-alias\",\n    recordType: \"CNAME\",\n    content: myHost.hostname,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_domain = exoscale.Domain(\"my_domain\", name=\"example.net\")\nmy_host = exoscale.DomainRecord(\"my_host\",\n    domain=my_domain.id,\n    name=\"my-host\",\n    record_type=\"A\",\n    content=\"1.2.3.4\")\nmy_host_alias = exoscale.DomainRecord(\"my_host_alias\",\n    domain=my_domain.id,\n    name=\"my-host-alias\",\n    record_type=\"CNAME\",\n    content=my_host.hostname)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myDomain = new Exoscale.Domain(\"my_domain\", new()\n    {\n        Name = \"example.net\",\n    });\n\n    var myHost = new Exoscale.DomainRecord(\"my_host\", new()\n    {\n        Domain = myDomain.Id,\n        Name = \"my-host\",\n        RecordType = \"A\",\n        Content = \"1.2.3.4\",\n    });\n\n    var myHostAlias = new Exoscale.DomainRecord(\"my_host_alias\", new()\n    {\n        Domain = myDomain.Id,\n        Name = \"my-host-alias\",\n        RecordType = \"CNAME\",\n        Content = myHost.Hostname,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDomain, err := exoscale.NewDomain(ctx, \"my_domain\", &exoscale.DomainArgs{\n\t\t\tName: pulumi.String(\"example.net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyHost, err := exoscale.NewDomainRecord(ctx, \"my_host\", &exoscale.DomainRecordArgs{\n\t\t\tDomain:     myDomain.ID(),\n\t\t\tName:       pulumi.String(\"my-host\"),\n\t\t\tRecordType: pulumi.String(\"A\"),\n\t\t\tContent:    pulumi.String(\"1.2.3.4\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewDomainRecord(ctx, \"my_host_alias\", &exoscale.DomainRecordArgs{\n\t\t\tDomain:     myDomain.ID(),\n\t\t\tName:       pulumi.String(\"my-host-alias\"),\n\t\t\tRecordType: pulumi.String(\"CNAME\"),\n\t\t\tContent:    myHost.Hostname,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.Domain;\nimport com.pulumiverse.exoscale.DomainArgs;\nimport com.pulumiverse.exoscale.DomainRecord;\nimport com.pulumiverse.exoscale.DomainRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDomain = new Domain(\"myDomain\", DomainArgs.builder()\n            .name(\"example.net\")\n            .build());\n\n        var myHost = new DomainRecord(\"myHost\", DomainRecordArgs.builder()\n            .domain(myDomain.id())\n            .name(\"my-host\")\n            .recordType(\"A\")\n            .content(\"1.2.3.4\")\n            .build());\n\n        var myHostAlias = new DomainRecord(\"myHostAlias\", DomainRecordArgs.builder()\n            .domain(myDomain.id())\n            .name(\"my-host-alias\")\n            .recordType(\"CNAME\")\n            .content(myHost.hostname())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDomain:\n    type: exoscale:Domain\n    name: my_domain\n    properties:\n      name: example.net\n  myHost:\n    type: exoscale:DomainRecord\n    name: my_host\n    properties:\n      domain: ${myDomain.id}\n      name: my-host\n      recordType: A\n      content: 1.2.3.4\n  myHostAlias:\n    type: exoscale:DomainRecord\n    name: my_host_alias\n    properties:\n      domain: ${myDomain.id}\n      name: my-host-alias\n      recordType: CNAME\n      content: ${myHost.hostname}\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing DNS domain record may be imported by `<ID>`:\n\n```sh\n$ pulumi import exoscale:index/domainRecord:DomainRecord \\ \n```\n\n  exoscale_domain_record.my_host \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6\n\n",
      "properties": {
        "content": {
          "type": "string",
          "description": "The record value. Format follows specific record type. For example SRV record format would be `<weight> <port> <target>`\n"
        },
        "contentNormalized": {
          "type": "string",
          "description": "The normalized value of the record\n"
        },
        "domain": {
          "type": "string",
          "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Domain \" pulumi-lang-dotnet=\" exoscale.Domain \" pulumi-lang-go=\" Domain \" pulumi-lang-python=\" Domain \" pulumi-lang-yaml=\" exoscale.Domain \" pulumi-lang-java=\" exoscale.Domain \"> exoscale.Domain </span>to attach the record to.\n"
        },
        "hostname": {
          "type": "string",
          "description": "The record *Fully Qualified Domain Name* (FQDN). Useful for aliasing `A`/`AAAA` records with `CNAME`.\n"
        },
        "name": {
          "type": "string",
          "description": "The record name, Leave blank (`\"\"`) to create a root record (similar to using `@` in a DNS zone file).\n"
        },
        "prio": {
          "type": "integer",
          "description": "The record priority (for types that support it; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>).\n"
        },
        "recordType": {
          "type": "string",
          "description": "❗ The record type (`A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `HINFO`, `MX`, `NAPTR`, `NS`, `POOL`, `SPF`, `SRV`, `SSHFP`, `TXT`, `URL`).\n"
        },
        "ttl": {
          "type": "integer",
          "description": "The record TTL (seconds; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>; default: <span pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\">`3600`</span>).\n"
        }
      },
      "type": "object",
      "required": [
        "content",
        "contentNormalized",
        "domain",
        "hostname",
        "name",
        "prio",
        "recordType",
        "ttl"
      ],
      "inputProperties": {
        "content": {
          "type": "string",
          "description": "The record value. Format follows specific record type. For example SRV record format would be `<weight> <port> <target>`\n"
        },
        "domain": {
          "type": "string",
          "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Domain \" pulumi-lang-dotnet=\" exoscale.Domain \" pulumi-lang-go=\" Domain \" pulumi-lang-python=\" Domain \" pulumi-lang-yaml=\" exoscale.Domain \" pulumi-lang-java=\" exoscale.Domain \"> exoscale.Domain </span>to attach the record to.\n",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The record name, Leave blank (`\"\"`) to create a root record (similar to using `@` in a DNS zone file).\n"
        },
        "prio": {
          "type": "integer",
          "description": "The record priority (for types that support it; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>).\n"
        },
        "recordType": {
          "type": "string",
          "description": "❗ The record type (`A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `HINFO`, `MX`, `NAPTR`, `NS`, `POOL`, `SPF`, `SRV`, `SSHFP`, `TXT`, `URL`).\n",
          "willReplaceOnChanges": true
        },
        "ttl": {
          "type": "integer",
          "description": "The record TTL (seconds; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>; default: <span pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\">`3600`</span>).\n"
        }
      },
      "requiredInputs": [
        "content",
        "domain",
        "recordType"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DomainRecord resources.\n",
        "properties": {
          "content": {
            "type": "string",
            "description": "The record value. Format follows specific record type. For example SRV record format would be `<weight> <port> <target>`\n"
          },
          "contentNormalized": {
            "type": "string",
            "description": "The normalized value of the record\n"
          },
          "domain": {
            "type": "string",
            "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Domain \" pulumi-lang-dotnet=\" exoscale.Domain \" pulumi-lang-go=\" Domain \" pulumi-lang-python=\" Domain \" pulumi-lang-yaml=\" exoscale.Domain \" pulumi-lang-java=\" exoscale.Domain \"> exoscale.Domain </span>to attach the record to.\n",
            "willReplaceOnChanges": true
          },
          "hostname": {
            "type": "string",
            "description": "The record *Fully Qualified Domain Name* (FQDN). Useful for aliasing `A`/`AAAA` records with `CNAME`.\n"
          },
          "name": {
            "type": "string",
            "description": "The record name, Leave blank (`\"\"`) to create a root record (similar to using `@` in a DNS zone file).\n"
          },
          "prio": {
            "type": "integer",
            "description": "The record priority (for types that support it; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>).\n"
          },
          "recordType": {
            "type": "string",
            "description": "❗ The record type (`A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `HINFO`, `MX`, `NAPTR`, `NS`, `POOL`, `SPF`, `SRV`, `SSHFP`, `TXT`, `URL`).\n",
            "willReplaceOnChanges": true
          },
          "ttl": {
            "type": "integer",
            "description": "The record TTL (seconds; minimum <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>; default: <span pulumi-lang-nodejs=\"`3600`\" pulumi-lang-dotnet=\"`3600`\" pulumi-lang-go=\"`3600`\" pulumi-lang-python=\"`3600`\" pulumi-lang-yaml=\"`3600`\" pulumi-lang-java=\"`3600`\">`3600`</span>).\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/elasticIp:ElasticIp": {
      "description": "Manage Exoscale [Elastic IPs (EIP)](https://community.exoscale.com/product/networking/eip/).\n\nCorresponding data source: exoscale_elastic_ip.\n\n## Example Usage\n\n*Unmanaged* EIPv4:\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myElasticIp = new exoscale.ElasticIp(\"my_elastic_ip\", {zone: \"ch-gva-2\"});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_elastic_ip = exoscale.ElasticIp(\"my_elastic_ip\", zone=\"ch-gva-2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myElasticIp = new Exoscale.ElasticIp(\"my_elastic_ip\", new()\n    {\n        Zone = \"ch-gva-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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewElasticIp(ctx, \"my_elastic_ip\", &exoscale.ElasticIpArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-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.pulumiverse.exoscale.ElasticIp;\nimport com.pulumiverse.exoscale.ElasticIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myElasticIp = new ElasticIp(\"myElasticIp\", ElasticIpArgs.builder()\n            .zone(\"ch-gva-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myElasticIp:\n    type: exoscale:ElasticIp\n    name: my_elastic_ip\n    properties:\n      zone: ch-gva-2\n```\n<!--End PulumiCodeChooser -->\n\n*Managed* EIPv6:\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myManagedElasticIp = new exoscale.ElasticIp(\"my_managed_elastic_ip\", {\n    zone: \"ch-gva-2\",\n    addressFamily: \"inet6\",\n    reverseDns: \"example.net\",\n    healthcheck: {\n        mode: \"https\",\n        port: 443,\n        uri: \"/health\",\n        interval: 5,\n        timeout: 3,\n        strikesOk: 2,\n        strikesFail: 3,\n        tlsSni: \"example.net\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_managed_elastic_ip = exoscale.ElasticIp(\"my_managed_elastic_ip\",\n    zone=\"ch-gva-2\",\n    address_family=\"inet6\",\n    reverse_dns=\"example.net\",\n    healthcheck={\n        \"mode\": \"https\",\n        \"port\": 443,\n        \"uri\": \"/health\",\n        \"interval\": 5,\n        \"timeout\": 3,\n        \"strikes_ok\": 2,\n        \"strikes_fail\": 3,\n        \"tls_sni\": \"example.net\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myManagedElasticIp = new Exoscale.ElasticIp(\"my_managed_elastic_ip\", new()\n    {\n        Zone = \"ch-gva-2\",\n        AddressFamily = \"inet6\",\n        ReverseDns = \"example.net\",\n        Healthcheck = new Exoscale.Inputs.ElasticIpHealthcheckArgs\n        {\n            Mode = \"https\",\n            Port = 443,\n            Uri = \"/health\",\n            Interval = 5,\n            Timeout = 3,\n            StrikesOk = 2,\n            StrikesFail = 3,\n            TlsSni = \"example.net\",\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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewElasticIp(ctx, \"my_managed_elastic_ip\", &exoscale.ElasticIpArgs{\n\t\t\tZone:          pulumi.String(\"ch-gva-2\"),\n\t\t\tAddressFamily: pulumi.String(\"inet6\"),\n\t\t\tReverseDns:    pulumi.String(\"example.net\"),\n\t\t\tHealthcheck: &exoscale.ElasticIpHealthcheckArgs{\n\t\t\t\tMode:        pulumi.String(\"https\"),\n\t\t\t\tPort:        pulumi.Int(443),\n\t\t\t\tUri:         pulumi.String(\"/health\"),\n\t\t\t\tInterval:    pulumi.Int(5),\n\t\t\t\tTimeout:     pulumi.Int(3),\n\t\t\t\tStrikesOk:   pulumi.Int(2),\n\t\t\t\tStrikesFail: pulumi.Int(3),\n\t\t\t\tTlsSni:      pulumi.String(\"example.net\"),\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.pulumiverse.exoscale.ElasticIp;\nimport com.pulumiverse.exoscale.ElasticIpArgs;\nimport com.pulumi.exoscale.inputs.ElasticIpHealthcheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myManagedElasticIp = new ElasticIp(\"myManagedElasticIp\", ElasticIpArgs.builder()\n            .zone(\"ch-gva-2\")\n            .addressFamily(\"inet6\")\n            .reverseDns(\"example.net\")\n            .healthcheck(ElasticIpHealthcheckArgs.builder()\n                .mode(\"https\")\n                .port(443)\n                .uri(\"/health\")\n                .interval(5)\n                .timeout(3)\n                .strikesOk(2)\n                .strikesFail(3)\n                .tlsSni(\"example.net\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myManagedElasticIp:\n    type: exoscale:ElasticIp\n    name: my_managed_elastic_ip\n    properties:\n      zone: ch-gva-2\n      addressFamily: inet6\n      reverseDns: example.net\n      healthcheck:\n        mode: https\n        port: 443\n        uri: /health\n        interval: 5\n        timeout: 3\n        strikesOk: 2\n        strikesFail: 3\n        tlsSni: example.net\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing Elastic IP (EIP) may be imported by `<ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/elasticIp:ElasticIp \\ \n```\n\n  exoscale_elastic_ip.my_elastic_ip \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "addressFamily": {
          "type": "string",
          "description": "❗ The Elastic IP (EIP) address family (<span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span> or <span pulumi-lang-nodejs=\"`inet6`\" pulumi-lang-dotnet=\"`Inet6`\" pulumi-lang-go=\"`inet6`\" pulumi-lang-python=\"`inet6`\" pulumi-lang-yaml=\"`inet6`\" pulumi-lang-java=\"`inet6`\">`inet6`</span>; default: <span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span>).\n"
        },
        "cidr": {
          "type": "string",
          "description": "The Elastic IP (EIP) CIDR.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the Elastic IP (EIP).\n"
        },
        "healthcheck": {
          "$ref": "#/types/exoscale:index%2FElasticIpHealthcheck:ElasticIpHealthcheck",
          "description": "Healthcheck configuration for *managed* EIPs. It can not be added to an existing *Unmanaged* EIP.\n"
        },
        "ipAddress": {
          "type": "string",
          "description": "The Elastic IP (EIP) IPv4 or IPv6 address.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "reverseDns": {
          "type": "string",
          "description": "Domain name for reverse DNS record.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "addressFamily",
        "cidr",
        "description",
        "healthcheck",
        "ipAddress",
        "zone"
      ],
      "inputProperties": {
        "addressFamily": {
          "type": "string",
          "description": "❗ The Elastic IP (EIP) address family (<span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span> or <span pulumi-lang-nodejs=\"`inet6`\" pulumi-lang-dotnet=\"`Inet6`\" pulumi-lang-go=\"`inet6`\" pulumi-lang-python=\"`inet6`\" pulumi-lang-yaml=\"`inet6`\" pulumi-lang-java=\"`inet6`\">`inet6`</span>; default: <span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span>).\n",
          "willReplaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the Elastic IP (EIP).\n"
        },
        "healthcheck": {
          "$ref": "#/types/exoscale:index%2FElasticIpHealthcheck:ElasticIpHealthcheck",
          "description": "Healthcheck configuration for *managed* EIPs. It can not be added to an existing *Unmanaged* EIP.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "reverseDns": {
          "type": "string",
          "description": "Domain name for reverse DNS record.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ElasticIp resources.\n",
        "properties": {
          "addressFamily": {
            "type": "string",
            "description": "❗ The Elastic IP (EIP) address family (<span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span> or <span pulumi-lang-nodejs=\"`inet6`\" pulumi-lang-dotnet=\"`Inet6`\" pulumi-lang-go=\"`inet6`\" pulumi-lang-python=\"`inet6`\" pulumi-lang-yaml=\"`inet6`\" pulumi-lang-java=\"`inet6`\">`inet6`</span>; default: <span pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\">`inet4`</span>).\n",
            "willReplaceOnChanges": true
          },
          "cidr": {
            "type": "string",
            "description": "The Elastic IP (EIP) CIDR.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the Elastic IP (EIP).\n"
          },
          "healthcheck": {
            "$ref": "#/types/exoscale:index%2FElasticIpHealthcheck:ElasticIpHealthcheck",
            "description": "Healthcheck configuration for *managed* EIPs. It can not be added to an existing *Unmanaged* EIP.\n"
          },
          "ipAddress": {
            "type": "string",
            "description": "The Elastic IP (EIP) IPv4 or IPv6 address.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "reverseDns": {
            "type": "string",
            "description": "Domain name for reverse DNS record.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/iamAccessKey:IamAccessKey": {
      "description": "## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySosAccessKey = new exoscale.IamAccessKey(\"my_sos_access_key\", {\n    name: \"my-sos-access-key\",\n    operations: [\n        \"get-sos-object\",\n        \"list-sos-bucket\",\n    ],\n    resources: [\"sos/bucket:my-bucket\"],\n});\nconst mySksAccessKey = new exoscale.IamAccessKey(\"my_sks_access_key\", {\n    name: \"my-sks-access-key\",\n    tags: [\"sks\"],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_sos_access_key = exoscale.IamAccessKey(\"my_sos_access_key\",\n    name=\"my-sos-access-key\",\n    operations=[\n        \"get-sos-object\",\n        \"list-sos-bucket\",\n    ],\n    resources=[\"sos/bucket:my-bucket\"])\nmy_sks_access_key = exoscale.IamAccessKey(\"my_sks_access_key\",\n    name=\"my-sks-access-key\",\n    tags=[\"sks\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var mySosAccessKey = new Exoscale.IamAccessKey(\"my_sos_access_key\", new()\n    {\n        Name = \"my-sos-access-key\",\n        Operations = new[]\n        {\n            \"get-sos-object\",\n            \"list-sos-bucket\",\n        },\n        Resources = new[]\n        {\n            \"sos/bucket:my-bucket\",\n        },\n    });\n\n    var mySksAccessKey = new Exoscale.IamAccessKey(\"my_sks_access_key\", new()\n    {\n        Name = \"my-sks-access-key\",\n        Tags = new[]\n        {\n            \"sks\",\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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewIamAccessKey(ctx, \"my_sos_access_key\", &exoscale.IamAccessKeyArgs{\n\t\t\tName: pulumi.String(\"my-sos-access-key\"),\n\t\t\tOperations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"get-sos-object\"),\n\t\t\t\tpulumi.String(\"list-sos-bucket\"),\n\t\t\t},\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sos/bucket:my-bucket\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewIamAccessKey(ctx, \"my_sks_access_key\", &exoscale.IamAccessKeyArgs{\n\t\t\tName: pulumi.String(\"my-sks-access-key\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"sks\"),\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.pulumiverse.exoscale.IamAccessKey;\nimport com.pulumiverse.exoscale.IamAccessKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mySosAccessKey = new IamAccessKey(\"mySosAccessKey\", IamAccessKeyArgs.builder()\n            .name(\"my-sos-access-key\")\n            .operations(            \n                \"get-sos-object\",\n                \"list-sos-bucket\")\n            .resources(\"sos/bucket:my-bucket\")\n            .build());\n\n        var mySksAccessKey = new IamAccessKey(\"mySksAccessKey\", IamAccessKeyArgs.builder()\n            .name(\"my-sks-access-key\")\n            .tags(\"sks\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mySosAccessKey:\n    type: exoscale:IamAccessKey\n    name: my_sos_access_key\n    properties:\n      name: my-sos-access-key\n      operations:\n        - get-sos-object\n        - list-sos-bucket\n      resources:\n        - sos/bucket:my-bucket\n  mySksAccessKey:\n    type: exoscale:IamAccessKey\n    name: my_sks_access_key\n    properties:\n      name: my-sks-access-key\n      tags:\n        - sks\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n> **NOTE:** You can retrieve the list of available operations and tags using the [Exoscale CLI](https://github.com/exoscale/cli/): `exo iam access-key list-operations`.\n",
      "properties": {
        "key": {
          "type": "string",
          "description": "The IAM access key (identifier).\n",
          "secret": true
        },
        "name": {
          "type": "string",
          "description": "❗ The IAM access key name.\n"
        },
        "operations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of API operations to restrict the key to.\n"
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of API [resources](https://community.exoscale.com/documentation/iam/quick-start/#restricting-api-access-keys-to-resources) to restrict the key to (`<domain>/<type>:<name>`).\n"
        },
        "secret": {
          "type": "string",
          "description": "The key secret.\n",
          "secret": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of tags to restrict the key to.\n"
        },
        "tagsOperations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "name",
        "operations",
        "secret",
        "tagsOperations"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "❗ The IAM access key name.\n",
          "willReplaceOnChanges": true
        },
        "operations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of API operations to restrict the key to.\n",
          "willReplaceOnChanges": true
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of API [resources](https://community.exoscale.com/documentation/iam/quick-start/#restricting-api-access-keys-to-resources) to restrict the key to (`<domain>/<type>:<name>`).\n",
          "willReplaceOnChanges": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ A list of tags to restrict the key to.\n",
          "willReplaceOnChanges": true
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering IamAccessKey resources.\n",
        "properties": {
          "key": {
            "type": "string",
            "description": "The IAM access key (identifier).\n",
            "secret": true
          },
          "name": {
            "type": "string",
            "description": "❗ The IAM access key name.\n",
            "willReplaceOnChanges": true
          },
          "operations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "❗ A list of API operations to restrict the key to.\n",
            "willReplaceOnChanges": true
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "❗ A list of API [resources](https://community.exoscale.com/documentation/iam/quick-start/#restricting-api-access-keys-to-resources) to restrict the key to (`<domain>/<type>:<name>`).\n",
            "willReplaceOnChanges": true
          },
          "secret": {
            "type": "string",
            "description": "The key secret.\n",
            "secret": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "❗ A list of tags to restrict the key to.\n",
            "willReplaceOnChanges": true
          },
          "tagsOperations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/iamApiKey:IamApiKey": {
      "description": "## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myRole = new exoscale.IamRole(\"my_role\", {\n    name: \"my-role\",\n    description: \"Example role\",\n    editable: true,\n    policy: {\n        defaultServiceStrategy: \"deny\",\n        services: {\n            sos: {\n                type: \"allow\",\n            },\n        },\n    },\n});\nconst myApiKey = new exoscale.IamApiKey(\"my_api_key\", {\n    name: \"my-api-key\",\n    roleId: myRole.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_role = exoscale.IamRole(\"my_role\",\n    name=\"my-role\",\n    description=\"Example role\",\n    editable=True,\n    policy={\n        \"default_service_strategy\": \"deny\",\n        \"services\": {\n            \"sos\": {\n                \"type\": \"allow\",\n            },\n        },\n    })\nmy_api_key = exoscale.IamApiKey(\"my_api_key\",\n    name=\"my-api-key\",\n    role_id=my_role.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myRole = new Exoscale.IamRole(\"my_role\", new()\n    {\n        Name = \"my-role\",\n        Description = \"Example role\",\n        Editable = true,\n        Policy = new Exoscale.Inputs.IamRolePolicyArgs\n        {\n            DefaultServiceStrategy = \"deny\",\n            Services = \n            {\n                { \"sos\", new Exoscale.Inputs.IamRolePolicyServicesArgs\n                {\n                    Type = \"allow\",\n                } },\n            },\n        },\n    });\n\n    var myApiKey = new Exoscale.IamApiKey(\"my_api_key\", new()\n    {\n        Name = \"my-api-key\",\n        RoleId = myRole.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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyRole, err := exoscale.NewIamRole(ctx, \"my_role\", &exoscale.IamRoleArgs{\n\t\t\tName:        pulumi.String(\"my-role\"),\n\t\t\tDescription: pulumi.String(\"Example role\"),\n\t\t\tEditable:    pulumi.Bool(true),\n\t\t\tPolicy: &exoscale.IamRolePolicyArgs{\n\t\t\t\tDefaultServiceStrategy: pulumi.String(\"deny\"),\n\t\t\t\tServices: exoscale.IamRolePolicyServicesMap{\n\t\t\t\t\t\"sos\": &exoscale.IamRolePolicyServicesArgs{\n\t\t\t\t\t\tType: pulumi.String(\"allow\"),\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 = exoscale.NewIamApiKey(ctx, \"my_api_key\", &exoscale.IamApiKeyArgs{\n\t\t\tName:   pulumi.String(\"my-api-key\"),\n\t\t\tRoleId: myRole.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.pulumiverse.exoscale.IamRole;\nimport com.pulumiverse.exoscale.IamRoleArgs;\nimport com.pulumi.exoscale.inputs.IamRolePolicyArgs;\nimport com.pulumiverse.exoscale.IamApiKey;\nimport com.pulumiverse.exoscale.IamApiKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myRole = new IamRole(\"myRole\", IamRoleArgs.builder()\n            .name(\"my-role\")\n            .description(\"Example role\")\n            .editable(true)\n            .policy(IamRolePolicyArgs.builder()\n                .defaultServiceStrategy(\"deny\")\n                .services(Map.of(\"sos\", IamRolePolicyServicesArgs.builder()\n                    .type(\"allow\")\n                    .build()))\n                .build())\n            .build());\n\n        var myApiKey = new IamApiKey(\"myApiKey\", IamApiKeyArgs.builder()\n            .name(\"my-api-key\")\n            .roleId(myRole.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myRole:\n    type: exoscale:IamRole\n    name: my_role\n    properties:\n      name: my-role\n      description: Example role\n      editable: true\n      policy:\n        defaultServiceStrategy: deny\n        services:\n          sos:\n            type: allow\n  myApiKey:\n    type: exoscale:IamApiKey\n    name: my_api_key\n    properties:\n      name: my-api-key\n      roleId: ${myRole.id}\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "properties": {
        "key": {
          "type": "string",
          "description": "The IAM API Key to match.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ IAM API Key name.\n"
        },
        "roleId": {
          "type": "string",
          "description": "❗ IAM API role ID.\n"
        },
        "secret": {
          "type": "string",
          "description": "Secret for the IAM API Key.\n",
          "secret": true
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamApiKeyTimeouts:IamApiKeyTimeouts"
        }
      },
      "type": "object",
      "required": [
        "key",
        "name",
        "roleId",
        "secret"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "❗ IAM API Key name.\n"
        },
        "roleId": {
          "type": "string",
          "description": "❗ IAM API role ID.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamApiKeyTimeouts:IamApiKeyTimeouts"
        }
      },
      "requiredInputs": [
        "roleId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering IamApiKey resources.\n",
        "properties": {
          "key": {
            "type": "string",
            "description": "The IAM API Key to match.\n"
          },
          "name": {
            "type": "string",
            "description": "❗ IAM API Key name.\n"
          },
          "roleId": {
            "type": "string",
            "description": "❗ IAM API role ID.\n"
          },
          "secret": {
            "type": "string",
            "description": "Secret for the IAM API Key.\n",
            "secret": true
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FIamApiKeyTimeouts:IamApiKeyTimeouts"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/iamOrgPolicy:IamOrgPolicy": {
      "description": "## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst orgPolicy = new exoscale.IamOrgPolicy(\"org_policy\", {\n    defaultServiceStrategy: \"allow\",\n    services: {\n        sos: {\n            type: \"deny\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\norg_policy = exoscale.IamOrgPolicy(\"org_policy\",\n    default_service_strategy=\"allow\",\n    services={\n        \"sos\": {\n            \"type\": \"deny\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var orgPolicy = new Exoscale.IamOrgPolicy(\"org_policy\", new()\n    {\n        DefaultServiceStrategy = \"allow\",\n        Services = \n        {\n            { \"sos\", new Exoscale.Inputs.IamOrgPolicyServicesArgs\n            {\n                Type = \"deny\",\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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewIamOrgPolicy(ctx, \"org_policy\", &exoscale.IamOrgPolicyArgs{\n\t\t\tDefaultServiceStrategy: pulumi.String(\"allow\"),\n\t\t\tServices: exoscale.IamOrgPolicyServicesMap{\n\t\t\t\t\"sos\": &exoscale.IamOrgPolicyServicesArgs{\n\t\t\t\t\tType: pulumi.String(\"deny\"),\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.pulumiverse.exoscale.IamOrgPolicy;\nimport com.pulumiverse.exoscale.IamOrgPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var orgPolicy = new IamOrgPolicy(\"orgPolicy\", IamOrgPolicyArgs.builder()\n            .defaultServiceStrategy(\"allow\")\n            .services(Map.of(\"sos\", IamOrgPolicyServicesArgs.builder()\n                .type(\"deny\")\n                .build()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  orgPolicy:\n    type: exoscale:IamOrgPolicy\n    name: org_policy\n    properties:\n      defaultServiceStrategy: allow\n      services:\n        sos:\n          type: deny\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "properties": {
        "defaultServiceStrategy": {
          "type": "string",
          "description": "Default service strategy (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "services": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/types/exoscale:index%2FIamOrgPolicyServices:IamOrgPolicyServices"
          },
          "description": "IAM policy services.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamOrgPolicyTimeouts:IamOrgPolicyTimeouts"
        }
      },
      "type": "object",
      "required": [
        "defaultServiceStrategy",
        "services"
      ],
      "inputProperties": {
        "defaultServiceStrategy": {
          "type": "string",
          "description": "Default service strategy (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
        },
        "services": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/types/exoscale:index%2FIamOrgPolicyServices:IamOrgPolicyServices"
          },
          "description": "IAM policy services.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamOrgPolicyTimeouts:IamOrgPolicyTimeouts"
        }
      },
      "requiredInputs": [
        "defaultServiceStrategy",
        "services"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering IamOrgPolicy resources.\n",
        "properties": {
          "defaultServiceStrategy": {
            "type": "string",
            "description": "Default service strategy (<span pulumi-lang-nodejs=\"`allow`\" pulumi-lang-dotnet=\"`Allow`\" pulumi-lang-go=\"`allow`\" pulumi-lang-python=\"`allow`\" pulumi-lang-yaml=\"`allow`\" pulumi-lang-java=\"`allow`\">`allow`</span> or <span pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\">`deny`</span>).\n"
          },
          "services": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/types/exoscale:index%2FIamOrgPolicyServices:IamOrgPolicyServices"
            },
            "description": "IAM policy services.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FIamOrgPolicyTimeouts:IamOrgPolicyTimeouts"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/iamRole:IamRole": {
      "description": "Manage Exoscale [IAM](https://community.exoscale.com/documentation/iam/) Role.\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the IAM Role\n"
        },
        "editable": {
          "type": "boolean",
          "description": "Defines if IAM Role Policy is editable or not.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "IAM Role labels.\n"
        },
        "name": {
          "type": "string",
          "description": "❗Name of IAM Role.\n"
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IAM Role permissions.\n"
        },
        "policy": {
          "$ref": "#/types/exoscale:index%2FIamRolePolicy:IamRolePolicy",
          "description": "IAM Policy.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamRoleTimeouts:IamRoleTimeouts"
        }
      },
      "type": "object",
      "required": [
        "description",
        "editable",
        "labels",
        "name",
        "permissions",
        "policy"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the IAM Role\n"
        },
        "editable": {
          "type": "boolean",
          "description": "Defines if IAM Role Policy is editable or not.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "IAM Role labels.\n"
        },
        "name": {
          "type": "string",
          "description": "❗Name of IAM Role.\n"
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "IAM Role permissions.\n"
        },
        "policy": {
          "$ref": "#/types/exoscale:index%2FIamRolePolicy:IamRolePolicy",
          "description": "IAM Policy.\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FIamRoleTimeouts:IamRoleTimeouts"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering IamRole resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "A free-form text describing the IAM Role\n"
          },
          "editable": {
            "type": "boolean",
            "description": "Defines if IAM Role Policy is editable or not.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "IAM Role labels.\n"
          },
          "name": {
            "type": "string",
            "description": "❗Name of IAM Role.\n"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "IAM Role permissions.\n"
          },
          "policy": {
            "$ref": "#/types/exoscale:index%2FIamRolePolicy:IamRolePolicy",
            "description": "IAM Policy.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FIamRoleTimeouts:IamRoleTimeouts"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/instancePool:InstancePool": {
      "description": "Manage Exoscale [Instance Pools](https://community.exoscale.com/product/compute/instances/how-to/instance-pools/).\n\nCorresponding data sources: exoscale_instance_pool, exoscale_instance_pool_list.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myTemplate = exoscale.getTemplate({\n    zone: \"ch-gva-2\",\n    name: \"Linux Ubuntu 22.04 LTS 64-bit\",\n});\nconst myInstancePool = new exoscale.InstancePool(\"my_instance_pool\", {\n    zone: \"ch-gva-2\",\n    name: \"my-instance-pool\",\n    templateId: myTemplate.then(myTemplate => myTemplate.id),\n    instanceType: \"standard.medium\",\n    diskSize: 10,\n    size: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\nimport pulumiverse_exoscale as exoscale\n\nmy_template = exoscale.get_template(zone=\"ch-gva-2\",\n    name=\"Linux Ubuntu 22.04 LTS 64-bit\")\nmy_instance_pool = exoscale.InstancePool(\"my_instance_pool\",\n    zone=\"ch-gva-2\",\n    name=\"my-instance-pool\",\n    template_id=my_template.id,\n    instance_type=\"standard.medium\",\n    disk_size=10,\n    size=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myTemplate = Exoscale.GetTemplate.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"Linux Ubuntu 22.04 LTS 64-bit\",\n    });\n\n    var myInstancePool = new Exoscale.InstancePool(\"my_instance_pool\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-instance-pool\",\n        TemplateId = myTemplate.Apply(getTemplateResult => getTemplateResult.Id),\n        InstanceType = \"standard.medium\",\n        DiskSize = 10,\n        Size = 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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyTemplate, err := exoscale.GetTemplate(ctx, &exoscale.GetTemplateArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"Linux Ubuntu 22.04 LTS 64-bit\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewInstancePool(ctx, \"my_instance_pool\", &exoscale.InstancePoolArgs{\n\t\t\tZone:         pulumi.String(\"ch-gva-2\"),\n\t\t\tName:         pulumi.String(\"my-instance-pool\"),\n\t\t\tTemplateId:   pulumi.String(myTemplate.Id),\n\t\t\tInstanceType: pulumi.String(\"standard.medium\"),\n\t\t\tDiskSize:     pulumi.Int(10),\n\t\t\tSize:         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.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetTemplateArgs;\nimport com.pulumiverse.exoscale.InstancePool;\nimport com.pulumiverse.exoscale.InstancePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myTemplate = ExoscaleFunctions.getTemplate(GetTemplateArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"Linux Ubuntu 22.04 LTS 64-bit\")\n            .build());\n\n        var myInstancePool = new InstancePool(\"myInstancePool\", InstancePoolArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-instance-pool\")\n            .templateId(myTemplate.id())\n            .instanceType(\"standard.medium\")\n            .diskSize(10)\n            .size(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myInstancePool:\n    type: exoscale:InstancePool\n    name: my_instance_pool\n    properties:\n      zone: ch-gva-2\n      name: my-instance-pool\n      templateId: ${myTemplate.id}\n      instanceType: standard.medium\n      diskSize: 10\n      size: 3\nvariables:\n  myTemplate:\n    fn::invoke:\n      function: exoscale:getTemplate\n      arguments:\n        zone: ch-gva-2\n        name: Linux Ubuntu 22.04 LTS 64-bit\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing instance pool may be imported by `<ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/instancePool:InstancePool \\ \n```\n\n  exoscale_instance_pool.my_instance_pool \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "affinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"> anti_affinity_group_ids </span>instead."
        },
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the pool.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size (GiB).\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*elastic*ip (IDs).\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix managed instances name (default: <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FInstancePoolInstance:InstancePoolInstance"
          },
          "description": "The list of managed instances. Structure is documented below.\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 on managed instances (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "keyPair": {
          "type": "string",
          "description": "The exoscale*ssh*key (name) to authorize in the managed instances.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "minAvailable": {
          "type": "integer",
          "description": "Minimum number of running Instances.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance pool name.\n"
        },
        "networkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*private*network (IDs).\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs).\n"
        },
        "serviceOffering": {
          "type": "string",
          "description": "The managed instances type. Please use the <span pulumi-lang-nodejs=\"`instanceType`\" pulumi-lang-dotnet=\"`InstanceType`\" pulumi-lang-go=\"`instanceType`\" pulumi-lang-python=\"`instance_type`\" pulumi-lang-yaml=\"`instanceType`\" pulumi-lang-java=\"`instanceType`\">`instance_type`</span> argument instead.\n",
          "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"\"instanceType\"\" pulumi-lang-dotnet=\"\"InstanceType\"\" pulumi-lang-go=\"\"instanceType\"\" pulumi-lang-python=\"\"instance_type\"\" pulumi-lang-yaml=\"\"instanceType\"\" pulumi-lang-java=\"\"instanceType\"\">\"instance_type\"</span>."
        },
        "size": {
          "type": "integer",
          "description": "The number of managed instances.\n"
        },
        "state": {
          "type": "string"
        },
        "templateId": {
          "type": "string",
          "description": "The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the managed instances.\n"
        },
        "userData": {
          "type": "string",
          "description": "[cloud-init](http://cloudinit.readthedocs.io/) configuration to apply to the managed instances.\n"
        },
        "virtualMachines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of managed instances (IDs). Please use the `instances.*.id` attribute instead.\n",
          "deprecationMessage": "Use the instances exported attribute instead."
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "diskSize",
        "instanceType",
        "instances",
        "minAvailable",
        "name",
        "serviceOffering",
        "size",
        "state",
        "templateId",
        "virtualMachines",
        "zone"
      ],
      "inputProperties": {
        "affinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"> anti_affinity_group_ids </span>instead."
        },
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the pool.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size (GiB).\n"
        },
        "elasticIpIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*elastic*ip (IDs).\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix managed instances name (default: <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
        },
        "instances": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FInstancePoolInstance:InstancePoolInstance"
          },
          "description": "The list of managed instances. Structure is documented below.\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 on managed instances (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
        },
        "keyPair": {
          "type": "string",
          "description": "The exoscale*ssh*key (name) to authorize in the managed instances.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "minAvailable": {
          "type": "integer",
          "description": "Minimum number of running Instances.\n"
        },
        "name": {
          "type": "string",
          "description": "The instance pool name.\n"
        },
        "networkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*private*network (IDs).\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs).\n"
        },
        "serviceOffering": {
          "type": "string",
          "description": "The managed instances type. Please use the <span pulumi-lang-nodejs=\"`instanceType`\" pulumi-lang-dotnet=\"`InstanceType`\" pulumi-lang-go=\"`instanceType`\" pulumi-lang-python=\"`instance_type`\" pulumi-lang-yaml=\"`instanceType`\" pulumi-lang-java=\"`instanceType`\">`instance_type`</span> argument instead.\n",
          "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"\"instanceType\"\" pulumi-lang-dotnet=\"\"InstanceType\"\" pulumi-lang-go=\"\"instanceType\"\" pulumi-lang-python=\"\"instance_type\"\" pulumi-lang-yaml=\"\"instanceType\"\" pulumi-lang-java=\"\"instanceType\"\">\"instance_type\"</span>."
        },
        "size": {
          "type": "integer",
          "description": "The number of managed instances.\n"
        },
        "state": {
          "type": "string"
        },
        "templateId": {
          "type": "string",
          "description": "The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the managed instances.\n"
        },
        "userData": {
          "type": "string",
          "description": "[cloud-init](http://cloudinit.readthedocs.io/) configuration to apply to the managed instances.\n"
        },
        "virtualMachines": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of managed instances (IDs). Please use the `instances.*.id` attribute instead.\n",
          "deprecationMessage": "Use the instances exported attribute instead."
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "size",
        "templateId",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering InstancePool resources.\n",
        "properties": {
          "affinityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n",
            "deprecationMessage": "Use<span pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"> anti_affinity_group_ids </span>instead."
          },
          "antiAffinityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*anti*affinity_group (IDs; may only be set at creation time).\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "A deploy target ID.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the pool.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The managed instances disk size (GiB).\n"
          },
          "elasticIpIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*elastic*ip (IDs).\n"
          },
          "instancePrefix": {
            "type": "string",
            "description": "The string used to prefix managed instances name (default: <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
          },
          "instanceType": {
            "type": "string",
            "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
          },
          "instances": {
            "type": "array",
            "items": {
              "$ref": "#/types/exoscale:index%2FInstancePoolInstance:InstancePoolInstance"
            },
            "description": "The list of managed instances. Structure is documented below.\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Enable IPv6 on managed instances (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n"
          },
          "keyPair": {
            "type": "string",
            "description": "The exoscale*ssh*key (name) to authorize in the managed instances.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "minAvailable": {
            "type": "integer",
            "description": "Minimum number of running Instances.\n"
          },
          "name": {
            "type": "string",
            "description": "The instance pool name.\n"
          },
          "networkIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*private*network (IDs).\n"
          },
          "securityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*security*group (IDs).\n"
          },
          "serviceOffering": {
            "type": "string",
            "description": "The managed instances type. Please use the <span pulumi-lang-nodejs=\"`instanceType`\" pulumi-lang-dotnet=\"`InstanceType`\" pulumi-lang-go=\"`instanceType`\" pulumi-lang-python=\"`instance_type`\" pulumi-lang-yaml=\"`instanceType`\" pulumi-lang-java=\"`instanceType`\">`instance_type`</span> argument instead.\n",
            "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"\"instanceType\"\" pulumi-lang-dotnet=\"\"InstanceType\"\" pulumi-lang-go=\"\"instanceType\"\" pulumi-lang-python=\"\"instance_type\"\" pulumi-lang-yaml=\"\"instanceType\"\" pulumi-lang-java=\"\"instanceType\"\">\"instance_type\"</span>."
          },
          "size": {
            "type": "integer",
            "description": "The number of managed instances.\n"
          },
          "state": {
            "type": "string"
          },
          "templateId": {
            "type": "string",
            "description": "The<span pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"> exoscale.getTemplate </span>(ID) to use when creating the managed instances.\n"
          },
          "userData": {
            "type": "string",
            "description": "[cloud-init](http://cloudinit.readthedocs.io/) configuration to apply to the managed instances.\n"
          },
          "virtualMachines": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of managed instances (IDs). Please use the `instances.*.id` attribute instead.\n",
            "deprecationMessage": "Use the instances exported attribute instead."
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/nlb:Nlb": {
      "description": "Manage Exoscale [Network Load Balancers (NLB)](https://community.exoscale.com/product/networking/nlb/).\n\nCorresponding data source: exoscale_nlb.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myNlb = new exoscale.Nlb(\"my_nlb\", {\n    zone: \"ch-gva-2\",\n    name: \"my-nlb\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_nlb = exoscale.Nlb(\"my_nlb\",\n    zone=\"ch-gva-2\",\n    name=\"my-nlb\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myNlb = new Exoscale.Nlb(\"my_nlb\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-nlb\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewNlb(ctx, \"my_nlb\", &exoscale.NlbArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-2\"),\n\t\t\tName: pulumi.String(\"my-nlb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.Nlb;\nimport com.pulumiverse.exoscale.NlbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myNlb = new Nlb(\"myNlb\", NlbArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-nlb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myNlb:\n    type: exoscale:Nlb\n    name: my_nlb\n    properties:\n      zone: ch-gva-2\n      name: my-nlb\n```\n<!--End PulumiCodeChooser -->\n\nNext step is to attach exoscale_nlb_service(s) to the NLB.\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing network load balancer (NLB) may be imported by `<ID>@<zone>`:\n\nconsole\n\n```sh\n$ pulumi import exoscale:index/nlb:Nlb \\ \n```\n\n  exoscale_nlb.my_nlb \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "createdAt": {
          "type": "string",
          "description": "The NLB creation date.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the NLB.\n"
        },
        "ipAddress": {
          "type": "string",
          "description": "The NLB IPv4 address.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The network load balancer (NLB) name.\n"
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of the exoscale*nlb*service (names).\n"
        },
        "state": {
          "type": "string",
          "description": "The current NLB state.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "createdAt",
        "ipAddress",
        "name",
        "services",
        "state",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the NLB.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The network load balancer (NLB) name.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Nlb resources.\n",
        "properties": {
          "createdAt": {
            "type": "string",
            "description": "The NLB creation date.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the NLB.\n"
          },
          "ipAddress": {
            "type": "string",
            "description": "The NLB IPv4 address.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string",
            "description": "The network load balancer (NLB) name.\n"
          },
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of the exoscale*nlb*service (names).\n"
          },
          "state": {
            "type": "string",
            "description": "The current NLB state.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/nlbService:NlbService": {
      "description": "Manage Exoscale [Network Load Balancer (NLB)](https://community.exoscale.com/product/networking/nlb/) Services.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myNlb = new exoscale.Nlb(\"my_nlb\", {\n    zone: \"ch-gva-2\",\n    name: \"my-nlb\",\n});\nconst myNlbService = new exoscale.NlbService(\"my_nlb_service\", {\n    nlbId: myNlb.id,\n    zone: myNlb.zone,\n    name: \"my-nlb-service\",\n    instancePoolId: myInstancePool.id,\n    protocol: \"tcp\",\n    port: 443,\n    targetPort: 8443,\n    strategy: \"round-robin\",\n    healthchecks: [{\n        mode: \"https\",\n        port: 8443,\n        uri: \"/healthz\",\n        tlsSni: \"example.net\",\n        interval: 5,\n        timeout: 3,\n        retries: 1,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_nlb = exoscale.Nlb(\"my_nlb\",\n    zone=\"ch-gva-2\",\n    name=\"my-nlb\")\nmy_nlb_service = exoscale.NlbService(\"my_nlb_service\",\n    nlb_id=my_nlb.id,\n    zone=my_nlb.zone,\n    name=\"my-nlb-service\",\n    instance_pool_id=my_instance_pool[\"id\"],\n    protocol=\"tcp\",\n    port=443,\n    target_port=8443,\n    strategy=\"round-robin\",\n    healthchecks=[{\n        \"mode\": \"https\",\n        \"port\": 8443,\n        \"uri\": \"/healthz\",\n        \"tls_sni\": \"example.net\",\n        \"interval\": 5,\n        \"timeout\": 3,\n        \"retries\": 1,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myNlb = new Exoscale.Nlb(\"my_nlb\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-nlb\",\n    });\n\n    var myNlbService = new Exoscale.NlbService(\"my_nlb_service\", new()\n    {\n        NlbId = myNlb.Id,\n        Zone = myNlb.Zone,\n        Name = \"my-nlb-service\",\n        InstancePoolId = myInstancePool.Id,\n        Protocol = \"tcp\",\n        Port = 443,\n        TargetPort = 8443,\n        Strategy = \"round-robin\",\n        Healthchecks = new[]\n        {\n            new Exoscale.Inputs.NlbServiceHealthcheckArgs\n            {\n                Mode = \"https\",\n                Port = 8443,\n                Uri = \"/healthz\",\n                TlsSni = \"example.net\",\n                Interval = 5,\n                Timeout = 3,\n                Retries = 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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNlb, err := exoscale.NewNlb(ctx, \"my_nlb\", &exoscale.NlbArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-2\"),\n\t\t\tName: pulumi.String(\"my-nlb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewNlbService(ctx, \"my_nlb_service\", &exoscale.NlbServiceArgs{\n\t\t\tNlbId:          myNlb.ID(),\n\t\t\tZone:           myNlb.Zone,\n\t\t\tName:           pulumi.String(\"my-nlb-service\"),\n\t\t\tInstancePoolId: pulumi.Any(myInstancePool.Id),\n\t\t\tProtocol:       pulumi.String(\"tcp\"),\n\t\t\tPort:           pulumi.Int(443),\n\t\t\tTargetPort:     pulumi.Int(8443),\n\t\t\tStrategy:       pulumi.String(\"round-robin\"),\n\t\t\tHealthchecks: exoscale.NlbServiceHealthcheckArray{\n\t\t\t\t&exoscale.NlbServiceHealthcheckArgs{\n\t\t\t\t\tMode:     pulumi.String(\"https\"),\n\t\t\t\t\tPort:     pulumi.Int(8443),\n\t\t\t\t\tUri:      pulumi.String(\"/healthz\"),\n\t\t\t\t\tTlsSni:   pulumi.String(\"example.net\"),\n\t\t\t\t\tInterval: pulumi.Int(5),\n\t\t\t\t\tTimeout:  pulumi.Int(3),\n\t\t\t\t\tRetries:  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.pulumiverse.exoscale.Nlb;\nimport com.pulumiverse.exoscale.NlbArgs;\nimport com.pulumiverse.exoscale.NlbService;\nimport com.pulumiverse.exoscale.NlbServiceArgs;\nimport com.pulumi.exoscale.inputs.NlbServiceHealthcheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myNlb = new Nlb(\"myNlb\", NlbArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-nlb\")\n            .build());\n\n        var myNlbService = new NlbService(\"myNlbService\", NlbServiceArgs.builder()\n            .nlbId(myNlb.id())\n            .zone(myNlb.zone())\n            .name(\"my-nlb-service\")\n            .instancePoolId(myInstancePool.id())\n            .protocol(\"tcp\")\n            .port(443)\n            .targetPort(8443)\n            .strategy(\"round-robin\")\n            .healthchecks(NlbServiceHealthcheckArgs.builder()\n                .mode(\"https\")\n                .port(8443)\n                .uri(\"/healthz\")\n                .tlsSni(\"example.net\")\n                .interval(5)\n                .timeout(3)\n                .retries(1)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myNlb:\n    type: exoscale:Nlb\n    name: my_nlb\n    properties:\n      zone: ch-gva-2\n      name: my-nlb\n  myNlbService:\n    type: exoscale:NlbService\n    name: my_nlb_service\n    properties:\n      nlbId: ${myNlb.id}\n      zone: ${myNlb.zone}\n      name: my-nlb-service\n      instancePoolId: ${myInstancePool.id}\n      protocol: tcp\n      port: 443\n      targetPort: 8443\n      strategy: round-robin\n      healthchecks:\n        - mode: https\n          port: 8443\n          uri: /healthz\n          tlsSni: example.net\n          interval: 5\n          timeout: 3\n          retries: 1\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing NLB service may be imported by `<nlb-ID>/<service-ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/nlbService:NlbService \\ \n```\n\n  exoscale_nlb_service.my_nlb_service \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6/9ecc6b8b-73d4-4211-8ced-f7f29bb79524@ch-gva-2\n\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the NLB service.\n"
        },
        "healthchecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FNlbServiceHealthcheck:NlbServiceHealthcheck"
          },
          "description": "The service health checking configuration.\n"
        },
        "instancePoolId": {
          "type": "string",
          "description": "❗ The exoscale*instance*pool (ID) to forward traffic to.\n"
        },
        "name": {
          "type": "string",
          "description": "The NLB service name.\n"
        },
        "nlbId": {
          "type": "string",
          "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Nlb \" pulumi-lang-dotnet=\" exoscale.Nlb \" pulumi-lang-go=\" Nlb \" pulumi-lang-python=\" Nlb \" pulumi-lang-yaml=\" exoscale.Nlb \" pulumi-lang-java=\" exoscale.Nlb \"> exoscale.Nlb </span>ID.\n"
        },
        "port": {
          "type": "integer",
          "description": "The healthcheck port.\n"
        },
        "protocol": {
          "type": "string",
          "description": "The protocol (<span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>|<span pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\">`udp`</span>; default: <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>).\n"
        },
        "state": {
          "type": "string"
        },
        "strategy": {
          "type": "string",
          "description": "The strategy (`round-robin`|`source-hash`; default: `round-robin`).\n"
        },
        "targetPort": {
          "type": "integer",
          "description": "The (TCP/UDP) port to forward traffic to (on target instance pool members).\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "healthchecks",
        "instancePoolId",
        "name",
        "nlbId",
        "port",
        "state",
        "targetPort",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the NLB service.\n"
        },
        "healthchecks": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FNlbServiceHealthcheck:NlbServiceHealthcheck"
          },
          "description": "The service health checking configuration.\n"
        },
        "instancePoolId": {
          "type": "string",
          "description": "❗ The exoscale*instance*pool (ID) to forward traffic to.\n",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "The NLB service name.\n"
        },
        "nlbId": {
          "type": "string",
          "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Nlb \" pulumi-lang-dotnet=\" exoscale.Nlb \" pulumi-lang-go=\" Nlb \" pulumi-lang-python=\" Nlb \" pulumi-lang-yaml=\" exoscale.Nlb \" pulumi-lang-java=\" exoscale.Nlb \"> exoscale.Nlb </span>ID.\n",
          "willReplaceOnChanges": true
        },
        "port": {
          "type": "integer",
          "description": "The healthcheck port.\n"
        },
        "protocol": {
          "type": "string",
          "description": "The protocol (<span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>|<span pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\">`udp`</span>; default: <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>).\n"
        },
        "strategy": {
          "type": "string",
          "description": "The strategy (`round-robin`|`source-hash`; default: `round-robin`).\n"
        },
        "targetPort": {
          "type": "integer",
          "description": "The (TCP/UDP) port to forward traffic to (on target instance pool members).\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "healthchecks",
        "instancePoolId",
        "nlbId",
        "port",
        "targetPort",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NlbService resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "A free-form text describing the NLB service.\n"
          },
          "healthchecks": {
            "type": "array",
            "items": {
              "$ref": "#/types/exoscale:index%2FNlbServiceHealthcheck:NlbServiceHealthcheck"
            },
            "description": "The service health checking configuration.\n"
          },
          "instancePoolId": {
            "type": "string",
            "description": "❗ The exoscale*instance*pool (ID) to forward traffic to.\n",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "The NLB service name.\n"
          },
          "nlbId": {
            "type": "string",
            "description": "❗ The parent<span pulumi-lang-nodejs=\" exoscale.Nlb \" pulumi-lang-dotnet=\" exoscale.Nlb \" pulumi-lang-go=\" Nlb \" pulumi-lang-python=\" Nlb \" pulumi-lang-yaml=\" exoscale.Nlb \" pulumi-lang-java=\" exoscale.Nlb \"> exoscale.Nlb </span>ID.\n",
            "willReplaceOnChanges": true
          },
          "port": {
            "type": "integer",
            "description": "The healthcheck port.\n"
          },
          "protocol": {
            "type": "string",
            "description": "The protocol (<span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>|<span pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\">`udp`</span>; default: <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>).\n"
          },
          "state": {
            "type": "string"
          },
          "strategy": {
            "type": "string",
            "description": "The strategy (`round-robin`|`source-hash`; default: `round-robin`).\n"
          },
          "targetPort": {
            "type": "integer",
            "description": "The (TCP/UDP) port to forward traffic to (on target instance pool members).\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/privateNetwork:PrivateNetwork": {
      "description": "Manage Exoscale [Private Networks](https://community.exoscale.com/product/networking/private-network/).\n\nCorresponding data source: exoscale_private_network.\n\n## Example Usage\n\n*Unmanaged* private network:\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myPrivateNetwork = new exoscale.PrivateNetwork(\"my_private_network\", {\n    zone: \"ch-gva-2\",\n    name: \"my-private-network\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_private_network = exoscale.PrivateNetwork(\"my_private_network\",\n    zone=\"ch-gva-2\",\n    name=\"my-private-network\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myPrivateNetwork = new Exoscale.PrivateNetwork(\"my_private_network\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-private-network\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewPrivateNetwork(ctx, \"my_private_network\", &exoscale.PrivateNetworkArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-2\"),\n\t\t\tName: pulumi.String(\"my-private-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.PrivateNetwork;\nimport com.pulumiverse.exoscale.PrivateNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myPrivateNetwork = new PrivateNetwork(\"myPrivateNetwork\", PrivateNetworkArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-private-network\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myPrivateNetwork:\n    type: exoscale:PrivateNetwork\n    name: my_private_network\n    properties:\n      zone: ch-gva-2\n      name: my-private-network\n```\n<!--End PulumiCodeChooser -->\n\n*Managed* private network:\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myManagedPrivateNetwork = new exoscale.PrivateNetwork(\"my_managed_private_network\", {\n    zone: \"ch-gva-2\",\n    name: \"my-managed-private-network\",\n    netmask: \"255.255.255.0\",\n    startIp: \"10.0.0.20\",\n    endIp: \"10.0.0.253\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_managed_private_network = exoscale.PrivateNetwork(\"my_managed_private_network\",\n    zone=\"ch-gva-2\",\n    name=\"my-managed-private-network\",\n    netmask=\"255.255.255.0\",\n    start_ip=\"10.0.0.20\",\n    end_ip=\"10.0.0.253\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myManagedPrivateNetwork = new Exoscale.PrivateNetwork(\"my_managed_private_network\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-managed-private-network\",\n        Netmask = \"255.255.255.0\",\n        StartIp = \"10.0.0.20\",\n        EndIp = \"10.0.0.253\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewPrivateNetwork(ctx, \"my_managed_private_network\", &exoscale.PrivateNetworkArgs{\n\t\t\tZone:    pulumi.String(\"ch-gva-2\"),\n\t\t\tName:    pulumi.String(\"my-managed-private-network\"),\n\t\t\tNetmask: pulumi.String(\"255.255.255.0\"),\n\t\t\tStartIp: pulumi.String(\"10.0.0.20\"),\n\t\t\tEndIp:   pulumi.String(\"10.0.0.253\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.PrivateNetwork;\nimport com.pulumiverse.exoscale.PrivateNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myManagedPrivateNetwork = new PrivateNetwork(\"myManagedPrivateNetwork\", PrivateNetworkArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-managed-private-network\")\n            .netmask(\"255.255.255.0\")\n            .startIp(\"10.0.0.20\")\n            .endIp(\"10.0.0.253\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myManagedPrivateNetwork:\n    type: exoscale:PrivateNetwork\n    name: my_managed_private_network\n    properties:\n      zone: ch-gva-2\n      name: my-managed-private-network\n      netmask: 255.255.255.0\n      startIp: 10.0.0.20\n      endIp: 10.0.0.253\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing private network may be imported by `<ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/privateNetwork:PrivateNetwork \\ \n```\n\n  exoscale_private_network.my_private_network \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the network.\n"
        },
        "endIp": {
          "type": "string",
          "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The private network name.\n"
        },
        "netmask": {
          "type": "string",
          "description": "(For managed Privnets) The network mask defining the IPv4 network allowed for static leases.\n"
        },
        "startIp": {
          "type": "string",
          "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "zone"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A free-form text describing the network.\n"
        },
        "endIp": {
          "type": "string",
          "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The private network name.\n"
        },
        "netmask": {
          "type": "string",
          "description": "(For managed Privnets) The network mask defining the IPv4 network allowed for static leases.\n"
        },
        "startIp": {
          "type": "string",
          "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering PrivateNetwork resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "A free-form text describing the network.\n"
          },
          "endIp": {
            "type": "string",
            "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string",
            "description": "The private network name.\n"
          },
          "netmask": {
            "type": "string",
            "description": "(For managed Privnets) The network mask defining the IPv4 network allowed for static leases.\n"
          },
          "startIp": {
            "type": "string",
            "description": "(For managed Privnets) The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/securityGroup:SecurityGroup": {
      "description": "Manage Exoscale [Security Groups](https://community.exoscale.com/product/networking/security-group/).\n\nCorresponding data source: exoscale_security_group.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySecurityGroup = new exoscale.SecurityGroup(\"my_security_group\", {name: \"my-security-group\"});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_security_group = exoscale.SecurityGroup(\"my_security_group\", name=\"my-security-group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var mySecurityGroup = new Exoscale.SecurityGroup(\"my_security_group\", new()\n    {\n        Name = \"my-security-group\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := exoscale.NewSecurityGroup(ctx, \"my_security_group\", &exoscale.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"my-security-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.SecurityGroup;\nimport com.pulumiverse.exoscale.SecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mySecurityGroup = new SecurityGroup(\"mySecurityGroup\", SecurityGroupArgs.builder()\n            .name(\"my-security-group\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mySecurityGroup:\n    type: exoscale:SecurityGroup\n    name: my_security_group\n    properties:\n      name: my-security-group\n```\n<!--End PulumiCodeChooser -->\n\nNext step is to attach exoscale_security_group_rule(s) to the group.\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing security group may be imported by `<ID>`:\n\n```sh\n$ pulumi import exoscale:index/securityGroup:SecurityGroup \\ \n```\n\n  exoscale_security_group.my_security_group \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6\n\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the group.\n"
        },
        "externalSources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of external network sources, in [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) notation.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The security group name.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the group.\n",
          "willReplaceOnChanges": true
        },
        "externalSources": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of external network sources, in [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) notation.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The security group name.\n",
          "willReplaceOnChanges": true
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SecurityGroup resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "❗ A free-form text describing the group.\n",
            "willReplaceOnChanges": true
          },
          "externalSources": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of external network sources, in [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) notation.\n"
          },
          "name": {
            "type": "string",
            "description": "❗ The security group name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/securityGroupRule:SecurityGroupRule": {
      "description": "Manage Exoscale [Security Group](https://community.exoscale.com/product/networking/security-group/) Rules.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySecurityGroup = new exoscale.SecurityGroup(\"my_security_group\", {name: \"my-security-group\"});\nconst mySecurityGroupRule = new exoscale.SecurityGroupRule(\"my_security_group_rule\", {\n    securityGroupId: mySecurityGroup.id,\n    type: \"INGRESS\",\n    protocol: \"TCP\",\n    cidr: \"0.0.0.0/0\",\n    startPort: 80,\n    endPort: 80,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_security_group = exoscale.SecurityGroup(\"my_security_group\", name=\"my-security-group\")\nmy_security_group_rule = exoscale.SecurityGroupRule(\"my_security_group_rule\",\n    security_group_id=my_security_group.id,\n    type=\"INGRESS\",\n    protocol=\"TCP\",\n    cidr=\"0.0.0.0/0\",\n    start_port=80,\n    end_port=80)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var mySecurityGroup = new Exoscale.SecurityGroup(\"my_security_group\", new()\n    {\n        Name = \"my-security-group\",\n    });\n\n    var mySecurityGroupRule = new Exoscale.SecurityGroupRule(\"my_security_group_rule\", new()\n    {\n        SecurityGroupId = mySecurityGroup.Id,\n        Type = \"INGRESS\",\n        Protocol = \"TCP\",\n        Cidr = \"0.0.0.0/0\",\n        StartPort = 80,\n        EndPort = 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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmySecurityGroup, err := exoscale.NewSecurityGroup(ctx, \"my_security_group\", &exoscale.SecurityGroupArgs{\n\t\t\tName: pulumi.String(\"my-security-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewSecurityGroupRule(ctx, \"my_security_group_rule\", &exoscale.SecurityGroupRuleArgs{\n\t\t\tSecurityGroupId: mySecurityGroup.ID(),\n\t\t\tType:            pulumi.String(\"INGRESS\"),\n\t\t\tProtocol:        pulumi.String(\"TCP\"),\n\t\t\tCidr:            pulumi.String(\"0.0.0.0/0\"),\n\t\t\tStartPort:       pulumi.Int(80),\n\t\t\tEndPort:         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.pulumiverse.exoscale.SecurityGroup;\nimport com.pulumiverse.exoscale.SecurityGroupArgs;\nimport com.pulumiverse.exoscale.SecurityGroupRule;\nimport com.pulumiverse.exoscale.SecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mySecurityGroup = new SecurityGroup(\"mySecurityGroup\", SecurityGroupArgs.builder()\n            .name(\"my-security-group\")\n            .build());\n\n        var mySecurityGroupRule = new SecurityGroupRule(\"mySecurityGroupRule\", SecurityGroupRuleArgs.builder()\n            .securityGroupId(mySecurityGroup.id())\n            .type(\"INGRESS\")\n            .protocol(\"TCP\")\n            .cidr(\"0.0.0.0/0\")\n            .startPort(80)\n            .endPort(80)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mySecurityGroup:\n    type: exoscale:SecurityGroup\n    name: my_security_group\n    properties:\n      name: my-security-group\n  mySecurityGroupRule:\n    type: exoscale:SecurityGroupRule\n    name: my_security_group_rule\n    properties:\n      securityGroupId: ${mySecurityGroup.id}\n      type: INGRESS\n      protocol: TCP\n      cidr: 0.0.0.0/0\n      startPort: 80\n      endPort: 80\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing security group rule may be imported by `<security-group-ID>/<security-group-rule-ID>`:\n\n```sh\n$ pulumi import exoscale:index/securityGroupRule:SecurityGroupRule \\ \n```\n\n  exoscale_security_group_rule.my_security_group_rule \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6/9ecc6b8b-73d4-4211-8ced-f7f29bb79524\n\n",
      "properties": {
        "cidr": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination IP subnet (in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)) to match (conflicts with <span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n"
        },
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the security group rule.\n"
        },
        "endPort": {
          "type": "integer",
          "description": "❗ A `TCP`/`UDP` port range to match.\n"
        },
        "icmpCode": {
          "type": "integer",
          "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n"
        },
        "icmpType": {
          "type": "integer",
          "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n"
        },
        "protocol": {
          "type": "string",
          "description": "❗ The network protocol to match (`TCP`, `UDP`, `ICMP`, `ICMPv6`, `AH`, `ESP`, `GRE`, `IPIP` or `ALL`)\n"
        },
        "publicSecurityGroup": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination public security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n"
        },
        "securityGroup": {
          "type": "string",
          "description": "❗ The parent security group name. Please use the <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
          "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span>"
        },
        "securityGroupId": {
          "type": "string",
          "description": "❗ The parent exoscale*security*group ID.\n"
        },
        "startPort": {
          "type": "integer",
          "description": "❗ A `TCP`/`UDP` port range to match.\n"
        },
        "type": {
          "type": "string",
          "description": "❗ The traffic direction to match (`INGRESS` or `EGRESS`).\n"
        },
        "userSecurityGroup": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>). Please use the <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
          "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>"
        },
        "userSecurityGroupId": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group ID to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/`user_security_group)`).\n"
        }
      },
      "type": "object",
      "required": [
        "publicSecurityGroup",
        "securityGroup",
        "securityGroupId",
        "type",
        "userSecurityGroup"
      ],
      "inputProperties": {
        "cidr": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination IP subnet (in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)) to match (conflicts with <span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n",
          "willReplaceOnChanges": true
        },
        "description": {
          "type": "string",
          "description": "❗ A free-form text describing the security group rule.\n",
          "willReplaceOnChanges": true
        },
        "endPort": {
          "type": "integer",
          "description": "❗ A `TCP`/`UDP` port range to match.\n",
          "willReplaceOnChanges": true
        },
        "icmpCode": {
          "type": "integer",
          "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n",
          "willReplaceOnChanges": true
        },
        "icmpType": {
          "type": "integer",
          "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n",
          "willReplaceOnChanges": true
        },
        "protocol": {
          "type": "string",
          "description": "❗ The network protocol to match (`TCP`, `UDP`, `ICMP`, `ICMPv6`, `AH`, `ESP`, `GRE`, `IPIP` or `ALL`)\n",
          "willReplaceOnChanges": true
        },
        "publicSecurityGroup": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination public security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n",
          "willReplaceOnChanges": true
        },
        "securityGroup": {
          "type": "string",
          "description": "❗ The parent security group name. Please use the <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
          "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span>",
          "willReplaceOnChanges": true
        },
        "securityGroupId": {
          "type": "string",
          "description": "❗ The parent exoscale*security*group ID.\n",
          "willReplaceOnChanges": true
        },
        "startPort": {
          "type": "integer",
          "description": "❗ A `TCP`/`UDP` port range to match.\n",
          "willReplaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "❗ The traffic direction to match (`INGRESS` or `EGRESS`).\n",
          "willReplaceOnChanges": true
        },
        "userSecurityGroup": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>). Please use the <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
          "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>",
          "willReplaceOnChanges": true
        },
        "userSecurityGroupId": {
          "type": "string",
          "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group ID to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/`user_security_group)`).\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "type"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SecurityGroupRule resources.\n",
        "properties": {
          "cidr": {
            "type": "string",
            "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination IP subnet (in [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation)) to match (conflicts with <span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n",
            "willReplaceOnChanges": true
          },
          "description": {
            "type": "string",
            "description": "❗ A free-form text describing the security group rule.\n",
            "willReplaceOnChanges": true
          },
          "endPort": {
            "type": "integer",
            "description": "❗ A `TCP`/`UDP` port range to match.\n",
            "willReplaceOnChanges": true
          },
          "icmpCode": {
            "type": "integer",
            "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n",
            "willReplaceOnChanges": true
          },
          "icmpType": {
            "type": "integer",
            "description": "❗ An ICMP/ICMPv6 [type/code](https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Control_messages) to match.\n",
            "willReplaceOnChanges": true
          },
          "protocol": {
            "type": "string",
            "description": "❗ The network protocol to match (`TCP`, `UDP`, `ICMP`, `ICMPv6`, `AH`, `ESP`, `GRE`, `IPIP` or `ALL`)\n",
            "willReplaceOnChanges": true
          },
          "publicSecurityGroup": {
            "type": "string",
            "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination public security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroup`\" pulumi-lang-dotnet=\"`UserSecurityGroup`\" pulumi-lang-go=\"`userSecurityGroup`\" pulumi-lang-python=\"`user_security_group`\" pulumi-lang-yaml=\"`userSecurityGroup`\" pulumi-lang-java=\"`userSecurityGroup`\">`user_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>).\n",
            "willReplaceOnChanges": true
          },
          "securityGroup": {
            "type": "string",
            "description": "❗ The parent security group name. Please use the <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
            "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`securityGroupId`\" pulumi-lang-dotnet=\"`SecurityGroupId`\" pulumi-lang-go=\"`securityGroupId`\" pulumi-lang-python=\"`security_group_id`\" pulumi-lang-yaml=\"`securityGroupId`\" pulumi-lang-java=\"`securityGroupId`\">`security_group_id`</span>",
            "willReplaceOnChanges": true
          },
          "securityGroupId": {
            "type": "string",
            "description": "❗ The parent exoscale*security*group ID.\n",
            "willReplaceOnChanges": true
          },
          "startPort": {
            "type": "integer",
            "description": "❗ A `TCP`/`UDP` port range to match.\n",
            "willReplaceOnChanges": true
          },
          "type": {
            "type": "string",
            "description": "❗ The traffic direction to match (`INGRESS` or `EGRESS`).\n",
            "willReplaceOnChanges": true
          },
          "userSecurityGroup": {
            "type": "string",
            "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group name to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/<span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>). Please use the <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span> argument along the exoscale*security*group data source instead.\n",
            "deprecationMessage": "Deprecated in favor of <span pulumi-lang-nodejs=\"`userSecurityGroupId`\" pulumi-lang-dotnet=\"`UserSecurityGroupId`\" pulumi-lang-go=\"`userSecurityGroupId`\" pulumi-lang-python=\"`user_security_group_id`\" pulumi-lang-yaml=\"`userSecurityGroupId`\" pulumi-lang-java=\"`userSecurityGroupId`\">`user_security_group_id`</span>",
            "willReplaceOnChanges": true
          },
          "userSecurityGroupId": {
            "type": "string",
            "description": "❗ An (`INGRESS`) source / (`EGRESS`) destination security group ID to match (conflicts with <span pulumi-lang-nodejs=\"`cidr`\" pulumi-lang-dotnet=\"`Cidr`\" pulumi-lang-go=\"`cidr`\" pulumi-lang-python=\"`cidr`\" pulumi-lang-yaml=\"`cidr`\" pulumi-lang-java=\"`cidr`\">`cidr`</span>/<span pulumi-lang-nodejs=\"`publicSecurityGroup`\" pulumi-lang-dotnet=\"`PublicSecurityGroup`\" pulumi-lang-go=\"`publicSecurityGroup`\" pulumi-lang-python=\"`public_security_group`\" pulumi-lang-yaml=\"`publicSecurityGroup`\" pulumi-lang-java=\"`publicSecurityGroup`\">`public_security_group`</span>/`user_security_group)`).\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/sksCluster:SksCluster": {
      "description": "Manage Exoscale [Scalable Kubernetes Service (SKS)](https://community.exoscale.com/product/compute/containers/) Clusters.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySksCluster = new exoscale.SksCluster(\"my_sks_cluster\", {\n    zone: \"ch-gva-2\",\n    name: \"my-sks-cluster\",\n});\nexport const mySksClusterEndpoint = mySksCluster.endpoint;\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_sks_cluster = exoscale.SksCluster(\"my_sks_cluster\",\n    zone=\"ch-gva-2\",\n    name=\"my-sks-cluster\")\npulumi.export(\"mySksClusterEndpoint\", my_sks_cluster.endpoint)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var mySksCluster = new Exoscale.SksCluster(\"my_sks_cluster\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-sks-cluster\",\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"mySksClusterEndpoint\"] = mySksCluster.Endpoint,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmySksCluster, err := exoscale.NewSksCluster(ctx, \"my_sks_cluster\", &exoscale.SksClusterArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-2\"),\n\t\t\tName: pulumi.String(\"my-sks-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mySksClusterEndpoint\", mySksCluster.Endpoint)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.SksCluster;\nimport com.pulumiverse.exoscale.SksClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mySksCluster = new SksCluster(\"mySksCluster\", SksClusterArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-sks-cluster\")\n            .build());\n\n        ctx.export(\"mySksClusterEndpoint\", mySksCluster.endpoint());\n    }\n}\n```\n```yaml\nresources:\n  mySksCluster:\n    type: exoscale:SksCluster\n    name: my_sks_cluster\n    properties:\n      zone: ch-gva-2\n      name: my-sks-cluster\noutputs:\n  mySksClusterEndpoint: ${mySksCluster.endpoint}\n```\n<!--End PulumiCodeChooser -->\n\nNext step is to attach exoscale_sks_nodepool(s) to the cluster.\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing SKS cluster may be imported by `<ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/sksCluster:SksCluster \\ \n```\n\n  exoscale_sks_cluster.my_sks_cluster \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6@ch-gva-2\n\n",
      "properties": {
        "addons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\">`exoscale_ccm`</span>/<span pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\">`metrics_server`</span> attributes, it will be removed in a future release."
        },
        "aggregationCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between the control plane and the aggregation layer (e.g. `metrics-server`).\n"
        },
        "audit": {
          "$ref": "#/types/exoscale:index%2FSksClusterAudit:SksClusterAudit",
          "description": "Parameters for Kubernetes Audit configuration (may only be enabled at creation time)"
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "Enable automatic upgrading of the control plane version.\n"
        },
        "cni": {
          "type": "string",
          "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n"
        },
        "controlPlaneCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between control plane components.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The cluster creation date.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the cluster.\n"
        },
        "enableKubeProxy": {
          "type": "boolean",
          "description": "❗ Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n"
        },
        "endpoint": {
          "type": "string",
          "description": "The cluster API endpoint.\n"
        },
        "exoscaleCcm": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "exoscaleCsi": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>; requires the CCM to be enabled).\n"
        },
        "featureGates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Feature gates options for the cluster.\n"
        },
        "kubeletCa": {
          "type": "string",
          "description": "The CA certificate (in PEM format) for TLS communications between kubelets and the control plane.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "metricsServer": {
          "type": "boolean",
          "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "name": {
          "type": "string",
          "description": "The SKS cluster name.\n"
        },
        "nodepools": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of exoscale*sks*nodepool (IDs) attached to the cluster.\n"
        },
        "oidc": {
          "$ref": "#/types/exoscale:index%2FSksClusterOidc:SksClusterOidc",
          "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
        },
        "serviceLevel": {
          "type": "string",
          "description": "The service level of the control plane (<span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span> or <span pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\">`starter`</span>; default: <span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span>; may only be set at creation time).\n"
        },
        "state": {
          "type": "string",
          "description": "The cluster state.\n"
        },
        "version": {
          "type": "string",
          "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "addons",
        "aggregationCa",
        "controlPlaneCa",
        "createdAt",
        "enableKubeProxy",
        "endpoint",
        "kubeletCa",
        "name",
        "nodepools",
        "oidc",
        "state",
        "version",
        "zone"
      ],
      "inputProperties": {
        "addons": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\">`exoscale_ccm`</span>/<span pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\">`metrics_server`</span> attributes, it will be removed in a future release."
        },
        "audit": {
          "$ref": "#/types/exoscale:index%2FSksClusterAudit:SksClusterAudit",
          "description": "Parameters for Kubernetes Audit configuration (may only be enabled at creation time)"
        },
        "autoUpgrade": {
          "type": "boolean",
          "description": "Enable automatic upgrading of the control plane version.\n"
        },
        "cni": {
          "type": "string",
          "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the cluster.\n"
        },
        "enableKubeProxy": {
          "type": "boolean",
          "description": "❗ Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n",
          "willReplaceOnChanges": true
        },
        "exoscaleCcm": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "exoscaleCsi": {
          "type": "boolean",
          "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>; requires the CCM to be enabled).\n"
        },
        "featureGates": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Feature gates options for the cluster.\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "metricsServer": {
          "type": "boolean",
          "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
        },
        "name": {
          "type": "string",
          "description": "The SKS cluster name.\n"
        },
        "oidc": {
          "$ref": "#/types/exoscale:index%2FSksClusterOidc:SksClusterOidc",
          "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
        },
        "serviceLevel": {
          "type": "string",
          "description": "The service level of the control plane (<span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span> or <span pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\">`starter`</span>; default: <span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span>; may only be set at creation time).\n"
        },
        "version": {
          "type": "string",
          "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SksCluster resources.\n",
        "properties": {
          "addons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "deprecationMessage": "This attribute has been replaced by <span pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\">`exoscale_ccm`</span>/<span pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\">`metrics_server`</span> attributes, it will be removed in a future release."
          },
          "aggregationCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between the control plane and the aggregation layer (e.g. `metrics-server`).\n"
          },
          "audit": {
            "$ref": "#/types/exoscale:index%2FSksClusterAudit:SksClusterAudit",
            "description": "Parameters for Kubernetes Audit configuration (may only be enabled at creation time)"
          },
          "autoUpgrade": {
            "type": "boolean",
            "description": "Enable automatic upgrading of the control plane version.\n"
          },
          "cni": {
            "type": "string",
            "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n"
          },
          "controlPlaneCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between control plane components.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "The cluster creation date.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the cluster.\n"
          },
          "enableKubeProxy": {
            "type": "boolean",
            "description": "❗ Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n",
            "willReplaceOnChanges": true
          },
          "endpoint": {
            "type": "string",
            "description": "The cluster API endpoint.\n"
          },
          "exoscaleCcm": {
            "type": "boolean",
            "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
          },
          "exoscaleCsi": {
            "type": "boolean",
            "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>; requires the CCM to be enabled).\n"
          },
          "featureGates": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feature gates options for the cluster.\n"
          },
          "kubeletCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between kubelets and the control plane.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "metricsServer": {
            "type": "boolean",
            "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>; may only be set at creation time).\n"
          },
          "name": {
            "type": "string",
            "description": "The SKS cluster name.\n"
          },
          "nodepools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of exoscale*sks*nodepool (IDs) attached to the cluster.\n"
          },
          "oidc": {
            "$ref": "#/types/exoscale:index%2FSksClusterOidc:SksClusterOidc",
            "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
          },
          "serviceLevel": {
            "type": "string",
            "description": "The service level of the control plane (<span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span> or <span pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\">`starter`</span>; default: <span pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\">`pro`</span>; may only be set at creation time).\n"
          },
          "state": {
            "type": "string",
            "description": "The cluster state.\n"
          },
          "version": {
            "type": "string",
            "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/sksKubeconfig:SksKubeconfig": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "❗ The parent exoscale*sks*cluster ID.\n"
        },
        "earlyRenewalSeconds": {
          "type": "integer"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ Group names in the generated Kubeconfig. The certificate present in the Kubeconfig will have these roles set in the Organization field.\n"
        },
        "kubeconfig": {
          "type": "string",
          "description": "The generated Kubeconfig (YAML content).\n",
          "secret": true
        },
        "readyForRenewal": {
          "type": "boolean"
        },
        "ttlSeconds": {
          "type": "number",
          "description": "❗ The Time-to-Live of the Kubeconfig, after which it will expire / become invalid (seconds; default: 2592000 = 30 days).\n"
        },
        "user": {
          "type": "string",
          "description": "❗ User name in the generated Kubeconfig. The certificate present in the Kubeconfig will also have this name set for the CN field.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "groups",
        "kubeconfig",
        "readyForRenewal",
        "user",
        "zone"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "❗ The parent exoscale*sks*cluster ID.\n",
          "willReplaceOnChanges": true
        },
        "earlyRenewalSeconds": {
          "type": "integer"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "❗ Group names in the generated Kubeconfig. The certificate present in the Kubeconfig will have these roles set in the Organization field.\n",
          "willReplaceOnChanges": true
        },
        "ttlSeconds": {
          "type": "number",
          "description": "❗ The Time-to-Live of the Kubeconfig, after which it will expire / become invalid (seconds; default: 2592000 = 30 days).\n",
          "willReplaceOnChanges": true
        },
        "user": {
          "type": "string",
          "description": "❗ User name in the generated Kubeconfig. The certificate present in the Kubeconfig will also have this name set for the CN field.\n",
          "willReplaceOnChanges": true
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "clusterId",
        "groups",
        "user",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SksKubeconfig resources.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "❗ The parent exoscale*sks*cluster ID.\n",
            "willReplaceOnChanges": true
          },
          "earlyRenewalSeconds": {
            "type": "integer"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "❗ Group names in the generated Kubeconfig. The certificate present in the Kubeconfig will have these roles set in the Organization field.\n",
            "willReplaceOnChanges": true
          },
          "kubeconfig": {
            "type": "string",
            "description": "The generated Kubeconfig (YAML content).\n",
            "secret": true
          },
          "readyForRenewal": {
            "type": "boolean"
          },
          "ttlSeconds": {
            "type": "number",
            "description": "❗ The Time-to-Live of the Kubeconfig, after which it will expire / become invalid (seconds; default: 2592000 = 30 days).\n",
            "willReplaceOnChanges": true
          },
          "user": {
            "type": "string",
            "description": "❗ User name in the generated Kubeconfig. The certificate present in the Kubeconfig will also have this name set for the CN field.\n",
            "willReplaceOnChanges": true
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/sksNodepool:SksNodepool": {
      "description": "Manage Exoscale [Scalable Kubernetes Service (SKS)](https://community.exoscale.com/product/compute/containers/) Node Pools.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySksCluster = new exoscale.SksCluster(\"my_sks_cluster\", {\n    zone: \"ch-gva-2\",\n    name: \"my-sks-cluster\",\n});\nconst mySksNodepool = new exoscale.SksNodepool(\"my_sks_nodepool\", {\n    clusterId: mySksCluster.id,\n    zone: mySksCluster.zone,\n    name: \"my-sks-nodepool\",\n    instanceType: \"standard.medium\",\n    size: 3,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_exoscale as exoscale\n\nmy_sks_cluster = exoscale.SksCluster(\"my_sks_cluster\",\n    zone=\"ch-gva-2\",\n    name=\"my-sks-cluster\")\nmy_sks_nodepool = exoscale.SksNodepool(\"my_sks_nodepool\",\n    cluster_id=my_sks_cluster.id,\n    zone=my_sks_cluster.zone,\n    name=\"my-sks-nodepool\",\n    instance_type=\"standard.medium\",\n    size=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() => \n{\n    var mySksCluster = new Exoscale.SksCluster(\"my_sks_cluster\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-sks-cluster\",\n    });\n\n    var mySksNodepool = new Exoscale.SksNodepool(\"my_sks_nodepool\", new()\n    {\n        ClusterId = mySksCluster.Id,\n        Zone = mySksCluster.Zone,\n        Name = \"my-sks-nodepool\",\n        InstanceType = \"standard.medium\",\n        Size = 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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmySksCluster, err := exoscale.NewSksCluster(ctx, \"my_sks_cluster\", &exoscale.SksClusterArgs{\n\t\t\tZone: pulumi.String(\"ch-gva-2\"),\n\t\t\tName: pulumi.String(\"my-sks-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = exoscale.NewSksNodepool(ctx, \"my_sks_nodepool\", &exoscale.SksNodepoolArgs{\n\t\t\tClusterId:    mySksCluster.ID(),\n\t\t\tZone:         mySksCluster.Zone,\n\t\t\tName:         pulumi.String(\"my-sks-nodepool\"),\n\t\t\tInstanceType: pulumi.String(\"standard.medium\"),\n\t\t\tSize:         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.pulumiverse.exoscale.SksCluster;\nimport com.pulumiverse.exoscale.SksClusterArgs;\nimport com.pulumiverse.exoscale.SksNodepool;\nimport com.pulumiverse.exoscale.SksNodepoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mySksCluster = new SksCluster(\"mySksCluster\", SksClusterArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-sks-cluster\")\n            .build());\n\n        var mySksNodepool = new SksNodepool(\"mySksNodepool\", SksNodepoolArgs.builder()\n            .clusterId(mySksCluster.id())\n            .zone(mySksCluster.zone())\n            .name(\"my-sks-nodepool\")\n            .instanceType(\"standard.medium\")\n            .size(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mySksCluster:\n    type: exoscale:SksCluster\n    name: my_sks_cluster\n    properties:\n      zone: ch-gva-2\n      name: my-sks-cluster\n  mySksNodepool:\n    type: exoscale:SksNodepool\n    name: my_sks_nodepool\n    properties:\n      clusterId: ${mySksCluster.id}\n      zone: ${mySksCluster.zone}\n      name: my-sks-nodepool\n      instanceType: standard.medium\n      size: 3\n```\n<!--End PulumiCodeChooser -->\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n\n## Import\n\nAn existing SKS node pool may be imported by `<cluster-ID>/<nodepool-ID>@<zone>`:\n\n```sh\n$ pulumi import exoscale:index/sksNodepool:SksNodepool \\ \n```\n\n  exoscale_sks_nodepool.my_sks_nodepool \\\n\n  f81d4fae-7dec-11d0-a765-00a0c91e6bf6/9ecc6b8b-73d4-4211-8ced-f7f29bb79524@ch-gva-2\n\n",
      "properties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs) to be attached to the managed instances.\n"
        },
        "clusterId": {
          "type": "string",
          "description": "❗ The parent exoscale*sks*cluster ID.\n"
        },
        "createdAt": {
          "type": "string",
          "description": "The pool creation date.\n"
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the pool.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size (GiB; default: <span pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\">`50`</span>).\n"
        },
        "instancePoolId": {
          "type": "string",
          "description": "The underlying exoscale*instance*pool ID.\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix the managed instances name (default <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPV6 for the nodepool nodes\n"
        },
        "kubeletImageGcs": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FSksNodepoolKubeletImageGc:SksNodepoolKubeletImageGc"
          },
          "description": "Configuration for this nodepool's kubelet image garbage collector\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The SKS node pool name.\n"
        },
        "privateNetworkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*private*network (IDs) to be attached to the managed instances.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs) to be attached to the managed instances.\n"
        },
        "size": {
          "type": "integer"
        },
        "state": {
          "type": "string",
          "description": "The current pool state.\n"
        },
        "storageLvm": {
          "type": "boolean",
          "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n"
        },
        "taints": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { \\n\\n = \"\\n\\n:\\n\\n\" }').\n"
        },
        "templateId": {
          "type": "string",
          "description": "The managed instances template ID.\n"
        },
        "version": {
          "type": "string",
          "description": "The managed instances version.\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "createdAt",
        "instancePoolId",
        "instanceType",
        "name",
        "size",
        "state",
        "templateId",
        "version",
        "zone"
      ],
      "inputProperties": {
        "antiAffinityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*anti*affinity_group (IDs) to be attached to the managed instances.\n"
        },
        "clusterId": {
          "type": "string",
          "description": "❗ The parent exoscale*sks*cluster ID.\n",
          "willReplaceOnChanges": true
        },
        "deployTargetId": {
          "type": "string",
          "description": "A deploy target ID.\n"
        },
        "description": {
          "type": "string",
          "description": "A free-form text describing the pool.\n"
        },
        "diskSize": {
          "type": "integer",
          "description": "The managed instances disk size (GiB; default: <span pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\">`50`</span>).\n"
        },
        "instancePrefix": {
          "type": "string",
          "description": "The string used to prefix the managed instances name (default <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
        },
        "instanceType": {
          "type": "string",
          "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPV6 for the nodepool nodes\n"
        },
        "kubeletImageGcs": {
          "type": "array",
          "items": {
            "$ref": "#/types/exoscale:index%2FSksNodepoolKubeletImageGc:SksNodepoolKubeletImageGc"
          },
          "description": "Configuration for this nodepool's kubelet image garbage collector\n"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value labels.\n"
        },
        "name": {
          "type": "string",
          "description": "The SKS node pool name.\n"
        },
        "privateNetworkIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*private*network (IDs) to be attached to the managed instances.\n"
        },
        "securityGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of exoscale*security*group (IDs) to be attached to the managed instances.\n"
        },
        "size": {
          "type": "integer"
        },
        "storageLvm": {
          "type": "boolean",
          "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n"
        },
        "taints": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { \\n\\n = \"\\n\\n:\\n\\n\" }').\n"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "clusterId",
        "instanceType",
        "size",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SksNodepool resources.\n",
        "properties": {
          "antiAffinityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*anti*affinity_group (IDs) to be attached to the managed instances.\n"
          },
          "clusterId": {
            "type": "string",
            "description": "❗ The parent exoscale*sks*cluster ID.\n",
            "willReplaceOnChanges": true
          },
          "createdAt": {
            "type": "string",
            "description": "The pool creation date.\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "A deploy target ID.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the pool.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The managed instances disk size (GiB; default: <span pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\">`50`</span>).\n"
          },
          "instancePoolId": {
            "type": "string",
            "description": "The underlying exoscale*instance*pool ID.\n"
          },
          "instancePrefix": {
            "type": "string",
            "description": "The string used to prefix the managed instances name (default <span pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\">`pool`</span>).\n"
          },
          "instanceType": {
            "type": "string",
            "description": "The managed compute instances type (`<family>.<size>`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Enable IPV6 for the nodepool nodes\n"
          },
          "kubeletImageGcs": {
            "type": "array",
            "items": {
              "$ref": "#/types/exoscale:index%2FSksNodepoolKubeletImageGc:SksNodepoolKubeletImageGc"
            },
            "description": "Configuration for this nodepool's kubelet image garbage collector\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string",
            "description": "The SKS node pool name.\n"
          },
          "privateNetworkIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*private*network (IDs) to be attached to the managed instances.\n"
          },
          "securityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*security*group (IDs) to be attached to the managed instances.\n"
          },
          "size": {
            "type": "integer"
          },
          "state": {
            "type": "string",
            "description": "The current pool state.\n"
          },
          "storageLvm": {
            "type": "boolean",
            "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n"
          },
          "taints": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { \\n\\n = \"\\n\\n:\\n\\n\" }').\n"
          },
          "templateId": {
            "type": "string",
            "description": "The managed instances template ID.\n"
          },
          "version": {
            "type": "string",
            "description": "The managed instances version.\n"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/sosBucketPolicy:SosBucketPolicy": {
      "description": "Manage Exoscale [SOS Bucket Policies](https://community.exoscale.com/product/storage/object-storage/how-to/bucketpolicy/).\n",
      "properties": {
        "bucket": {
          "type": "string",
          "description": "❗ The name of the bucket to which the policy is to be applied.\n"
        },
        "policy": {
          "type": "string",
          "description": "The content of the policy\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FSosBucketPolicyTimeouts:SosBucketPolicyTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "type": "object",
      "required": [
        "bucket",
        "policy",
        "zone"
      ],
      "inputProperties": {
        "bucket": {
          "type": "string",
          "description": "❗ The name of the bucket to which the policy is to be applied.\n"
        },
        "policy": {
          "type": "string",
          "description": "The content of the policy\n"
        },
        "timeouts": {
          "$ref": "#/types/exoscale:index%2FSosBucketPolicyTimeouts:SosBucketPolicyTimeouts"
        },
        "zone": {
          "type": "string",
          "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
        }
      },
      "requiredInputs": [
        "bucket",
        "policy",
        "zone"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SosBucketPolicy resources.\n",
        "properties": {
          "bucket": {
            "type": "string",
            "description": "❗ The name of the bucket to which the policy is to be applied.\n"
          },
          "policy": {
            "type": "string",
            "description": "The content of the policy\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FSosBucketPolicyTimeouts:SosBucketPolicyTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "❗ The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object"
      }
    },
    "exoscale:index/sshKey:SshKey": {
      "description": "\n\n## Import\n\nAn existing SSH key may be imported as a resource by `<name>`:\n\n```sh\n$ pulumi import exoscale:index/sshKey:SshKey \\ \n```\n\n  exoscale_ssh_key.my_ssh_key \\\n\n  my-ssh-key\n\n",
      "properties": {
        "fingerprint": {
          "type": "string",
          "description": "The SSH key unique identifier.\n"
        },
        "name": {
          "type": "string",
          "description": "❗ The SSH key name.\n"
        },
        "publicKey": {
          "type": "string",
          "description": "❗ The SSH *public* key that will be authorized in compute instances.\n"
        }
      },
      "type": "object",
      "required": [
        "fingerprint",
        "name",
        "publicKey"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "❗ The SSH key name.\n",
          "willReplaceOnChanges": true
        },
        "publicKey": {
          "type": "string",
          "description": "❗ The SSH *public* key that will be authorized in compute instances.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "publicKey"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SshKey resources.\n",
        "properties": {
          "fingerprint": {
            "type": "string",
            "description": "The SSH key unique identifier.\n"
          },
          "name": {
            "type": "string",
            "description": "❗ The SSH key name.\n",
            "willReplaceOnChanges": true
          },
          "publicKey": {
            "type": "string",
            "description": "❗ The SSH *public* key that will be authorized in compute instances.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "exoscale:index/getAntiAffinityGroup:getAntiAffinityGroup": {
      "description": "Fetch Exoscale [Anti-Affinity Groups](https://community.exoscale.com/product/compute/instances/how-to/anti-affinity/) data.\n\nCorresponding resource: exoscale_anti_affinity_group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myAntiAffinityGroup = exoscale.getAntiAffinityGroup({\n    name: \"my-anti-affinity-group\",\n});\nexport const myAntiAffinityGroupId = myAntiAffinityGroup.then(myAntiAffinityGroup =\u003e myAntiAffinityGroup.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_anti_affinity_group = exoscale.get_anti_affinity_group(name=\"my-anti-affinity-group\")\npulumi.export(\"myAntiAffinityGroupId\", my_anti_affinity_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myAntiAffinityGroup = Exoscale.GetAntiAffinityGroup.Invoke(new()\n    {\n        Name = \"my-anti-affinity-group\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myAntiAffinityGroupId\"] = myAntiAffinityGroup.Apply(getAntiAffinityGroupResult =\u003e getAntiAffinityGroupResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyAntiAffinityGroup, err := exoscale.LookupAntiAffinityGroup(ctx, \u0026exoscale.LookupAntiAffinityGroupArgs{\n\t\t\tName: pulumi.StringRef(\"my-anti-affinity-group\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myAntiAffinityGroupId\", myAntiAffinityGroup.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetAntiAffinityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myAntiAffinityGroup = ExoscaleFunctions.getAntiAffinityGroup(GetAntiAffinityGroupArgs.builder()\n            .name(\"my-anti-affinity-group\")\n            .build());\n\n        ctx.export(\"myAntiAffinityGroupId\", myAntiAffinityGroup.id());\n    }\n}\n```\n```yaml\nvariables:\n  myAntiAffinityGroup:\n    fn::invoke:\n      function: exoscale:getAntiAffinityGroup\n      arguments:\n        name: my-anti-affinity-group\noutputs:\n  myAntiAffinityGroupId: ${myAntiAffinityGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getAntiAffinityGroup.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The anti-affinity group ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "The group name to match (conflicts with \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).\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getAntiAffinityGroup.\n",
        "properties": {
          "id": {
            "description": "The anti-affinity group ID to match (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",
            "type": "string"
          },
          "instances": {
            "description": "The list of attached exoscale*compute*instance (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The group name to match (conflicts with \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).\n",
            "type": "string"
          }
        },
        "required": [
          "instances"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getBlockStorageVolume:getBlockStorageVolume": {
      "description": "Fetch [Exoscale Block Storage](https://community.exoscale.com/product/storage/block-storage/) Volume.\n\nBlock Storage offers persistent externally attached volumes for your workloads.\n\nCorresponding resource: exoscale_block_storage_volume.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getBlockStorageVolume.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Volume ID to match.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeTimeouts:getBlockStorageVolumeTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "id",
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getBlockStorageVolume.\n",
        "properties": {
          "blocksize": {
            "description": "Volume block size.\n",
            "type": "integer"
          },
          "createdAt": {
            "description": "Volume creation date.\n",
            "type": "string"
          },
          "id": {
            "description": "Volume ID to match.\n",
            "type": "string"
          },
          "instance": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeInstance:getBlockStorageVolumeInstance",
            "description": "Volume attached instance.\n"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resource labels.\n",
            "type": "object"
          },
          "name": {
            "description": "Volume name.\n",
            "type": "string"
          },
          "size": {
            "description": "Volume size in GB.\n",
            "type": "integer"
          },
          "snapshots": {
            "description": "Volume snapshots.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeSnapshot:getBlockStorageVolumeSnapshot"
            },
            "type": "array"
          },
          "state": {
            "description": "Volume state.\n",
            "type": "string"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeTimeouts:getBlockStorageVolumeTimeouts"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "blocksize",
          "createdAt",
          "id",
          "instance",
          "labels",
          "name",
          "size",
          "snapshots",
          "state",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getBlockStorageVolumeSnapshot:getBlockStorageVolumeSnapshot": {
      "description": "Fetch [Exoscale Block Storage](https://community.exoscale.com/product/storage/block-storage/) Snapshot.\n\nBlock Storage offers persistent externally attached volumes for your workloads.\n\nCorresponding resource: exoscale_block_storage_snapshot.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getBlockStorageVolumeSnapshot.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Snapshot ID to match.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeSnapshotTimeouts:getBlockStorageVolumeSnapshotTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "id",
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getBlockStorageVolumeSnapshot.\n",
        "properties": {
          "createdAt": {
            "description": "Snapshot creation date.\n",
            "type": "string"
          },
          "id": {
            "description": "Snapshot ID to match.\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels.\n",
            "type": "object"
          },
          "name": {
            "description": "Snapshot name.\n",
            "type": "string"
          },
          "size": {
            "description": "Snapshot size in GB.\n",
            "type": "integer"
          },
          "state": {
            "description": "Snapshot state.\n",
            "type": "string"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeSnapshotTimeouts:getBlockStorageVolumeSnapshotTimeouts"
          },
          "volume": {
            "$ref": "#/types/exoscale:index%2FgetBlockStorageVolumeSnapshotVolume:getBlockStorageVolumeSnapshotVolume",
            "description": "Block Storage Volume.\n"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "id",
          "labels",
          "name",
          "size",
          "state",
          "volume",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getComputeInstance:getComputeInstance": {
      "description": "Fetch Exoscale [Compute Instances](https://community.exoscale.com/documentation/compute/) data.\n\nCorresponding resource: exoscale_compute_instance.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myInstance = exoscale.getComputeInstance({\n    zone: \"ch-gva-2\",\n    name: \"my-instance\",\n});\nexport const myInstanceId = myInstance.then(myInstance =\u003e myInstance.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_instance = exoscale.get_compute_instance(zone=\"ch-gva-2\",\n    name=\"my-instance\")\npulumi.export(\"myInstanceId\", my_instance.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myInstance = Exoscale.GetComputeInstance.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-instance\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myInstanceId\"] = myInstance.Apply(getComputeInstanceResult =\u003e getComputeInstanceResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyInstance, err := exoscale.LookupComputeInstance(ctx, \u0026exoscale.LookupComputeInstanceArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"my-instance\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myInstanceId\", myInstance.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetComputeInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myInstance = ExoscaleFunctions.getComputeInstance(GetComputeInstanceArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-instance\")\n            .build());\n\n        ctx.export(\"myInstanceId\", myInstance.id());\n    }\n}\n```\n```yaml\nvariables:\n  myInstance:\n    fn::invoke:\n      function: exoscale:getComputeInstance\n      arguments:\n        zone: ch-gva-2\n        name: my-instance\noutputs:\n  myInstanceId: ${myInstance.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getComputeInstance.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The compute instance ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "The instance name to match (conflicts with \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).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getComputeInstance.\n",
        "properties": {
          "antiAffinityGroupIds": {
            "description": "The list of attached exoscale*anti*affinity_group (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "The compute instance creation date.\n",
            "type": "string"
          },
          "deployTargetId": {
            "description": "A deploy target ID.\n",
            "type": "string"
          },
          "diskSize": {
            "description": "The instance disk size (GiB).\n",
            "type": "integer"
          },
          "elasticIpIds": {
            "description": "The list of attached exoscale*elastic*ip (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "enableSecureBoot": {
            "description": "Whether secure boot is enabled on the instance.\n",
            "type": "boolean"
          },
          "enableTpm": {
            "description": "Whether TPM is enabled on the instance.\n",
            "type": "boolean"
          },
          "id": {
            "description": "The compute instance ID to match (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",
            "type": "string"
          },
          "ipv6": {
            "description": "Whether IPv6 is enabled on the instance.\n",
            "type": "boolean"
          },
          "ipv6Address": {
            "description": "The instance (main network interface) IPv6 address (if enabled).\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n",
            "type": "object"
          },
          "managerId": {
            "description": "The instance manager ID, if any.\n",
            "type": "string"
          },
          "managerType": {
            "description": "The instance manager type (instance pool, SKS node pool, etc.), if any.\n",
            "type": "string"
          },
          "name": {
            "description": "The instance name to match (conflicts with \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).\n",
            "type": "string"
          },
          "privateNetworkIds": {
            "description": "The list of attached exoscale*private*network (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "publicIpAddress": {
            "description": "The instance (main network interface) IPv4 address.\n",
            "type": "string"
          },
          "reverseDns": {
            "description": "Domain name for reverse DNS record.\n",
            "type": "string"
          },
          "securityGroupIds": {
            "description": "The list of attached exoscale*security*group (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sshKey": {
            "deprecationMessage": "Use\u003cspan pulumi-lang-nodejs=\" sshKeys \" pulumi-lang-dotnet=\" SshKeys \" pulumi-lang-go=\" sshKeys \" pulumi-lang-python=\" ssh_keys \" pulumi-lang-yaml=\" sshKeys \" pulumi-lang-java=\" sshKeys \"\u003e ssh_keys \u003c/span\u003einstead",
            "description": "The exoscale*ssh*key (name) authorized on the instance.\n",
            "type": "string"
          },
          "sshKeys": {
            "description": "The list of exoscale*ssh*key (name) authorized on the instance.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "state": {
            "description": "The instance state.\n",
            "type": "string"
          },
          "templateId": {
            "description": "The instance\u003cspan pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"\u003e exoscale.getTemplate \u003c/span\u003eID.\n",
            "type": "string"
          },
          "type": {
            "description": "The instance type.\n",
            "type": "string"
          },
          "userData": {
            "description": "The instance [cloud-init](http://cloudinit.readthedocs.io/en/latest/) configuration.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "antiAffinityGroupIds",
          "createdAt",
          "deployTargetId",
          "diskSize",
          "elasticIpIds",
          "enableSecureBoot",
          "enableTpm",
          "ipv6",
          "ipv6Address",
          "labels",
          "managerId",
          "managerType",
          "privateNetworkIds",
          "publicIpAddress",
          "reverseDns",
          "securityGroupIds",
          "sshKey",
          "sshKeys",
          "state",
          "templateId",
          "type",
          "userData",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getComputeInstanceList:getComputeInstanceList": {
      "description": "List Exoscale [Compute Instances](https://community.exoscale.com/documentation/compute/).\n\nCorresponding resource: exoscale_compute_instance.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\nimport * as std from \"@pulumi/std\";\n\nconst myComputeInstanceList = exoscale.getComputeInstanceList({\n    zone: \"ch-gva-2\",\n    type: \"standard.micro\",\n    name: \"/.*ubuntu.*/\",\n    labels: {\n        customer: \"/.*bank.*/\",\n        contract: \"premium-support\",\n    },\n});\nexport const myComputeInstanceIds = std.formatlist({\n    input: \"%s\",\n    args: [myComputeInstanceList.then(myComputeInstanceList =\u003e myComputeInstanceList.instances.map(__item =\u003e __item.id))],\n}).then(invoke =\u003e std.join({\n    separator: \"\\n\",\n    input: invoke.result,\n})).then(invoke =\u003e invoke.result);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\nimport pulumi_std as std\n\nmy_compute_instance_list = exoscale.get_compute_instance_list(zone=\"ch-gva-2\",\n    type=\"standard.micro\",\n    name=\"/.*ubuntu.*/\",\n    labels={\n        \"customer\": \"/.*bank.*/\",\n        \"contract\": \"premium-support\",\n    })\npulumi.export(\"myComputeInstanceIds\", std.join(separator=\"\\n\",\n    input=std.formatlist(input=\"%s\",\n        args=[[__item.id for __item in my_compute_instance_list.instances]]).result).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myComputeInstanceList = Exoscale.GetComputeInstanceList.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Type = \"standard.micro\",\n        Name = \"/.*ubuntu.*/\",\n        Labels = \n        {\n            { \"customer\", \"/.*bank.*/\" },\n            { \"contract\", \"premium-support\" },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myComputeInstanceIds\"] = Std.Formatlist.Invoke(new()\n        {\n            Input = \"%s\",\n            Args = new[]\n            {\n                myComputeInstanceList.Apply(getComputeInstanceListResult =\u003e getComputeInstanceListResult.Instances).Select(__item =\u003e __item.Id).ToList(),\n            },\n        }).Apply(invoke =\u003e Std.Join.Invoke(new()\n        {\n            Separator = @\"\n\",\n            Input = invoke.Result,\n        })).Apply(invoke =\u003e invoke.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-exoscale/sdk/go/exoscale\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nmyComputeInstanceList, err := exoscale.GetComputeInstanceList(ctx, \u0026exoscale.GetComputeInstanceListArgs{\nZone: \"ch-gva-2\",\nType: pulumi.StringRef(\"standard.micro\"),\nName: pulumi.StringRef(\"/.*ubuntu.*/\"),\nLabels: map[string]interface{}{\n\"customer\": \"/.*bank.*/\",\n\"contract\": \"premium-support\",\n},\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"myComputeInstanceIds\", pulumi.String(std.Join(ctx, \u0026std.JoinArgs{\nSeparator: \"\\n\",\nInput: std.Formatlist(ctx, \u0026std.FormatlistArgs{\nInput: \"%s\",\nArgs: [][]*string{\n%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:15,16-53),\n},\n}, nil).Result,\n}, nil).Result))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetComputeInstanceListArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatlistArgs;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myComputeInstanceList = ExoscaleFunctions.getComputeInstanceList(GetComputeInstanceListArgs.builder()\n            .zone(\"ch-gva-2\")\n            .type(\"standard.micro\")\n            .name(\"/.*ubuntu.*/\")\n            .labels(Map.ofEntries(\n                Map.entry(\"customer\", \"/.*bank.*/\"),\n                Map.entry(\"contract\", \"premium-support\")\n            ))\n            .build());\n\n        ctx.export(\"myComputeInstanceIds\", StdFunctions.join(JoinArgs.builder()\n            .separator(\"\"\"\n\n            \"\"\")\n            .input(StdFunctions.formatlist(FormatlistArgs.builder()\n                .input(\"%s\")\n                .args(myComputeInstanceList.instances().stream().map(element -\u003e element.id()).collect(toList()))\n                .build()).result())\n            .build()).result());\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getComputeInstanceList.\n",
        "properties": {
          "createdAt": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "Match against this int\n"
          },
          "enableSecureBoot": {
            "type": "boolean"
          },
          "enableTpm": {
            "type": "boolean"
          },
          "id": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "ipv6Address": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n"
          },
          "managerId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "managerType": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "name": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "publicIpAddress": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "reverseDns": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "sshKey": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "state": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "templateId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "type": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "userData": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getComputeInstanceList.\n",
        "properties": {
          "createdAt": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "deployTargetId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "diskSize": {
            "description": "Match against this int\n",
            "type": "integer"
          },
          "enableSecureBoot": {
            "type": "boolean"
          },
          "enableTpm": {
            "type": "boolean"
          },
          "id": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "instances": {
            "description": "The list of exoscale*compute*instance.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetComputeInstanceListInstance:getComputeInstanceListInstance"
            },
            "type": "array"
          },
          "ipv6": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "ipv6Address": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n",
            "type": "object"
          },
          "managerId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "managerType": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "name": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "publicIpAddress": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "reverseDns": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "sshKey": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "state": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "templateId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "type": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "userData": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "instances",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getDatabaseUri:getDatabaseUri": {
      "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myDatabaseDatabase = new exoscale.Database(\"my_database\", {\n    zone: \"ch-gva-2\",\n    name: \"my-database\",\n    type: \"pg\",\n    plan: \"startup-4\",\n    maintenanceDow: \"sunday\",\n    maintenanceTime: \"23:00:00\",\n    terminationProtection: true,\n    pg: {\n        version: \"13\",\n        backupSchedule: \"04:00\",\n        ipFilters: [\n            \"1.2.3.4/32\",\n            \"5.6.7.8/32\",\n        ],\n        pgSettings: JSON.stringify({\n            timezone: \"Europe/Zurich\",\n        }),\n    },\n});\nconst myDatabase = exoscale.getDatabaseUri({\n    name: \"my-database\",\n    type: \"pg\",\n    zone: \"ch-gva-2\",\n});\nexport const myDatabaseUri = myDatabase.then(myDatabase =\u003e myDatabase.uri);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_exoscale as exoscale\nimport pulumiverse_exoscale as exoscale\n\nmy_database_database = exoscale.Database(\"my_database\",\n    zone=\"ch-gva-2\",\n    name=\"my-database\",\n    type=\"pg\",\n    plan=\"startup-4\",\n    maintenance_dow=\"sunday\",\n    maintenance_time=\"23:00:00\",\n    termination_protection=True,\n    pg={\n        \"version\": \"13\",\n        \"backup_schedule\": \"04:00\",\n        \"ip_filters\": [\n            \"1.2.3.4/32\",\n            \"5.6.7.8/32\",\n        ],\n        \"pg_settings\": json.dumps({\n            \"timezone\": \"Europe/Zurich\",\n        }),\n    })\nmy_database = exoscale.get_database_uri(name=\"my-database\",\n    type=\"pg\",\n    zone=\"ch-gva-2\")\npulumi.export(\"myDatabaseUri\", my_database.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Exoscale = Pulumiverse.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDatabaseDatabase = new Exoscale.Database(\"my_database\", new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-database\",\n        Type = \"pg\",\n        Plan = \"startup-4\",\n        MaintenanceDow = \"sunday\",\n        MaintenanceTime = \"23:00:00\",\n        TerminationProtection = true,\n        Pg = new Exoscale.Inputs.DatabasePgArgs\n        {\n            Version = \"13\",\n            BackupSchedule = \"04:00\",\n            IpFilters = new[]\n            {\n                \"1.2.3.4/32\",\n                \"5.6.7.8/32\",\n            },\n            PgSettings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n            {\n                [\"timezone\"] = \"Europe/Zurich\",\n            }),\n        },\n    });\n\n    var myDatabase = Exoscale.GetDatabaseUri.Invoke(new()\n    {\n        Name = \"my-database\",\n        Type = \"pg\",\n        Zone = \"ch-gva-2\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myDatabaseUri\"] = myDatabase.Apply(getDatabaseUriResult =\u003e getDatabaseUriResult.Uri),\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-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"timezone\": \"Europe/Zurich\",\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 = exoscale.NewDatabase(ctx, \"my_database\", \u0026exoscale.DatabaseArgs{\n\t\t\tZone:                  pulumi.String(\"ch-gva-2\"),\n\t\t\tName:                  pulumi.String(\"my-database\"),\n\t\t\tType:                  pulumi.String(\"pg\"),\n\t\t\tPlan:                  pulumi.String(\"startup-4\"),\n\t\t\tMaintenanceDow:        pulumi.String(\"sunday\"),\n\t\t\tMaintenanceTime:       pulumi.String(\"23:00:00\"),\n\t\t\tTerminationProtection: pulumi.Bool(true),\n\t\t\tPg: \u0026exoscale.DatabasePgArgs{\n\t\t\t\tVersion:        pulumi.String(\"13\"),\n\t\t\t\tBackupSchedule: pulumi.String(\"04:00\"),\n\t\t\t\tIpFilters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1.2.3.4/32\"),\n\t\t\t\t\tpulumi.String(\"5.6.7.8/32\"),\n\t\t\t\t},\n\t\t\t\tPgSettings: pulumi.String(json0),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDatabase, err := exoscale.GetDatabaseUri(ctx, \u0026exoscale.GetDatabaseUriArgs{\n\t\t\tName: \"my-database\",\n\t\t\tType: \"pg\",\n\t\t\tZone: \"ch-gva-2\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myDatabaseUri\", myDatabase.Uri)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.exoscale.Database;\nimport com.pulumiverse.exoscale.DatabaseArgs;\nimport com.pulumi.exoscale.inputs.DatabasePgArgs;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetDatabaseUriArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDatabaseDatabase = new Database(\"myDatabaseDatabase\", DatabaseArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-database\")\n            .type(\"pg\")\n            .plan(\"startup-4\")\n            .maintenanceDow(\"sunday\")\n            .maintenanceTime(\"23:00:00\")\n            .terminationProtection(true)\n            .pg(DatabasePgArgs.builder()\n                .version(\"13\")\n                .backupSchedule(\"04:00\")\n                .ipFilters(                \n                    \"1.2.3.4/32\",\n                    \"5.6.7.8/32\")\n                .pgSettings(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"timezone\", \"Europe/Zurich\")\n                    )))\n                .build())\n            .build());\n\n        final var myDatabase = ExoscaleFunctions.getDatabaseUri(GetDatabaseUriArgs.builder()\n            .name(\"my-database\")\n            .type(\"pg\")\n            .zone(\"ch-gva-2\")\n            .build());\n\n        ctx.export(\"myDatabaseUri\", myDatabase.uri());\n    }\n}\n```\n```yaml\nresources:\n  myDatabaseDatabase:\n    type: exoscale:Database\n    name: my_database\n    properties:\n      zone: ch-gva-2\n      name: my-database\n      type: pg\n      plan: startup-4\n      maintenanceDow: sunday\n      maintenanceTime: 23:00:00\n      terminationProtection: true\n      pg:\n        version: '13'\n        backupSchedule: 04:00\n        ipFilters:\n          - 1.2.3.4/32\n          - 5.6.7.8/32\n        pgSettings:\n          fn::toJSON:\n            timezone: Europe/Zurich\nvariables:\n  myDatabase:\n    fn::invoke:\n      function: exoscale:getDatabaseUri\n      arguments:\n        name: my-database\n        type: pg\n        zone: ch-gva-2\noutputs:\n  myDatabaseUri: ${myDatabase.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDatabaseUri.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of database service to match.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetDatabaseUriTimeouts:getDatabaseUriTimeouts"
          },
          "type": {
            "type": "string",
            "description": "The type of the database service (\u003cspan pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\"\u003e`kafka`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\"\u003e`opensearch`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\"\u003e`pg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\"\u003e`valkey`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\"\u003e`grafana`\u003c/span\u003e).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale Zone name.\n"
          }
        },
        "type": "object",
        "required": [
          "name",
          "type",
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDatabaseUri.\n",
        "properties": {
          "dbName": {
            "description": "Default database name\n",
            "type": "string"
          },
          "host": {
            "description": "Database service hostname\n",
            "type": "string"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "name": {
            "description": "Name of database service to match.\n",
            "type": "string"
          },
          "password": {
            "description": "Admin user password\n",
            "secret": true,
            "type": "string"
          },
          "port": {
            "description": "Database service port\n",
            "type": "integer"
          },
          "schema": {
            "description": "Database service connection schema\n",
            "type": "string"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetDatabaseUriTimeouts:getDatabaseUriTimeouts"
          },
          "type": {
            "description": "The type of the database service (\u003cspan pulumi-lang-nodejs=\"`kafka`\" pulumi-lang-dotnet=\"`Kafka`\" pulumi-lang-go=\"`kafka`\" pulumi-lang-python=\"`kafka`\" pulumi-lang-yaml=\"`kafka`\" pulumi-lang-java=\"`kafka`\"\u003e`kafka`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\"\u003e`mysql`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`opensearch`\" pulumi-lang-dotnet=\"`Opensearch`\" pulumi-lang-go=\"`opensearch`\" pulumi-lang-python=\"`opensearch`\" pulumi-lang-yaml=\"`opensearch`\" pulumi-lang-java=\"`opensearch`\"\u003e`opensearch`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pg`\" pulumi-lang-dotnet=\"`Pg`\" pulumi-lang-go=\"`pg`\" pulumi-lang-python=\"`pg`\" pulumi-lang-yaml=\"`pg`\" pulumi-lang-java=\"`pg`\"\u003e`pg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`valkey`\" pulumi-lang-dotnet=\"`Valkey`\" pulumi-lang-go=\"`valkey`\" pulumi-lang-python=\"`valkey`\" pulumi-lang-yaml=\"`valkey`\" pulumi-lang-java=\"`valkey`\"\u003e`valkey`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`grafana`\" pulumi-lang-dotnet=\"`Grafana`\" pulumi-lang-go=\"`grafana`\" pulumi-lang-python=\"`grafana`\" pulumi-lang-yaml=\"`grafana`\" pulumi-lang-java=\"`grafana`\"\u003e`grafana`\u003c/span\u003e).\n",
            "type": "string"
          },
          "uri": {
            "description": "Database service connection URI.\n",
            "secret": true,
            "type": "string"
          },
          "username": {
            "description": "Admin user username\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale Zone name.\n",
            "type": "string"
          }
        },
        "required": [
          "dbName",
          "host",
          "id",
          "name",
          "password",
          "port",
          "schema",
          "type",
          "uri",
          "username",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getDomain:getDomain": {
      "description": "Fetch Exoscale [DNS](https://community.exoscale.com/product/networking/dns/) Domains data.\n\nCorresponding resource: exoscale_domain.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myDomain = exoscale.getDomain({\n    name: \"my.domain\",\n});\nexport const myDomainId = myDomain.then(myDomain =\u003e myDomain.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_domain = exoscale.get_domain(name=\"my.domain\")\npulumi.export(\"myDomainId\", my_domain.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDomain = Exoscale.GetDomain.Invoke(new()\n    {\n        Name = \"my.domain\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myDomainId\"] = myDomain.Apply(getDomainResult =\u003e getDomainResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyDomain, err := exoscale.LookupDomain(ctx, \u0026exoscale.LookupDomainArgs{\n\t\t\tName: \"my.domain\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myDomainId\", myDomain.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myDomain = ExoscaleFunctions.getDomain(GetDomainArgs.builder()\n            .name(\"my.domain\")\n            .build());\n\n        ctx.export(\"myDomainId\", myDomain.id());\n    }\n}\n```\n```yaml\nvariables:\n  myDomain:\n    fn::invoke:\n      function: exoscale:getDomain\n      arguments:\n        name: my.domain\noutputs:\n  myDomainId: ${myDomain.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDomain.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The DNS domain name to match.\n"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDomain.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "name": {
            "description": "The DNS domain name to match.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getDomainRecord:getDomainRecord": {
      "description": "Fetch Exoscale [DNS](https://community.exoscale.com/product/networking/dns/) Domain Records data.\n\nCorresponding resource: exoscale_domain_record.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n    const myDomain = await exoscale.getDomain({\n        name: \"my.domain\",\n    });\n    const myExoscaleDomainARecords = await exoscale.getDomainRecord({\n        domain: myDomain.name,\n        filter: {\n            name: \"my-host\",\n            recordType: \"A\",\n        },\n    });\n    const myExoscaleDomainNSRecords = await exoscale.getDomainRecord({\n        domain: myDomain.name,\n        filter: {\n            contentRegex: \"ns.*\",\n        },\n    });\n    return {\n        myExoscaleDomainARecords: (await std.join({\n            separator: \"\\n\",\n            input: (await std.formatlist({\n                input: \"%s\",\n                args: [myExoscaleDomainARecords.records.map(__item =\u003e __item.name)],\n            })).result,\n        })).result,\n        myExoscaleDomainNSRecords: (await std.join({\n            separator: \"\\n\",\n            input: (await std.formatlist({\n                input: \"%s\",\n                args: [myExoscaleDomainNSRecords.records.map(__item =\u003e __item.content)],\n            })).result,\n        })).result,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\nimport pulumi_std as std\n\nmy_domain = exoscale.get_domain(name=\"my.domain\")\nmy_exoscale_domain_a_records = exoscale.get_domain_record(domain=my_domain.name,\n    filter={\n        \"name\": \"my-host\",\n        \"record_type\": \"A\",\n    })\nmy_exoscale_domain_ns_records = exoscale.get_domain_record(domain=my_domain.name,\n    filter={\n        \"content_regex\": \"ns.*\",\n    })\npulumi.export(\"myExoscaleDomainARecords\", std.join(separator=\"\\n\",\n    input=std.formatlist(input=\"%s\",\n        args=[[__item.name for __item in my_exoscale_domain_a_records.records]]).result).result)\npulumi.export(\"myExoscaleDomainNSRecords\", std.join(separator=\"\\n\",\n    input=std.formatlist(input=\"%s\",\n        args=[[__item.content for __item in my_exoscale_domain_ns_records.records]]).result).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDomain = Exoscale.GetDomain.Invoke(new()\n    {\n        Name = \"my.domain\",\n    });\n\n    var myExoscaleDomainARecords = Exoscale.GetDomainRecord.Invoke(new()\n    {\n        Domain = myDomain.Apply(getDomainResult =\u003e getDomainResult.Name),\n        Filter = new Exoscale.Inputs.GetDomainRecordFilterInputArgs\n        {\n            Name = \"my-host\",\n            RecordType = \"A\",\n        },\n    });\n\n    var myExoscaleDomainNSRecords = Exoscale.GetDomainRecord.Invoke(new()\n    {\n        Domain = myDomain.Apply(getDomainResult =\u003e getDomainResult.Name),\n        Filter = new Exoscale.Inputs.GetDomainRecordFilterInputArgs\n        {\n            ContentRegex = \"ns.*\",\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myExoscaleDomainARecords\"] = Std.Formatlist.Invoke(new()\n        {\n            Input = \"%s\",\n            Args = new[]\n            {\n                myExoscaleDomainARecords.Apply(getDomainRecordResult =\u003e getDomainRecordResult.Records).Select(__item =\u003e __item.Name).ToList(),\n            },\n        }).Apply(invoke =\u003e Std.Join.Invoke(new()\n        {\n            Separator = @\"\n\",\n            Input = invoke.Result,\n        })).Apply(invoke =\u003e invoke.Result),\n        [\"myExoscaleDomainNSRecords\"] = Std.Formatlist.Invoke(new()\n        {\n            Input = \"%s\",\n            Args = new[]\n            {\n                myExoscaleDomainNSRecords.Apply(getDomainRecordResult =\u003e getDomainRecordResult.Records).Select(__item =\u003e __item.Content).ToList(),\n            },\n        }).Apply(invoke =\u003e Std.Join.Invoke(new()\n        {\n            Separator = @\"\n\",\n            Input = invoke.Result,\n        })).Apply(invoke =\u003e invoke.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-exoscale/sdk/go/exoscale\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nmyDomain, err := exoscale.LookupDomain(ctx, \u0026exoscale.LookupDomainArgs{\nName: \"my.domain\",\n}, nil);\nif err != nil {\nreturn err\n}\nmyExoscaleDomainARecords, err := exoscale.LookupDomainRecord(ctx, \u0026exoscale.LookupDomainRecordArgs{\nDomain: myDomain.Name,\nFilter: exoscale.GetDomainRecordFilter{\nName: pulumi.StringRef(\"my-host\"),\nRecordType: pulumi.StringRef(\"A\"),\n},\n}, nil);\nif err != nil {\nreturn err\n}\nmyExoscaleDomainNSRecords, err := exoscale.LookupDomainRecord(ctx, \u0026exoscale.LookupDomainRecordArgs{\nDomain: myDomain.Name,\nFilter: exoscale.GetDomainRecordFilter{\nContentRegex: pulumi.StringRef(\"ns.*\"),\n},\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"myExoscaleDomainARecords\", pulumi.String(std.Join(ctx, \u0026std.JoinArgs{\nSeparator: \"\\n\",\nInput: std.Formatlist(ctx, \u0026std.FormatlistArgs{\nInput: \"%s\",\nArgs: [][]*string{\n%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:24,16-56),\n},\n}, nil).Result,\n}, nil).Result))\nctx.Export(\"myExoscaleDomainNSRecords\", pulumi.String(std.Join(ctx, \u0026std.JoinArgs{\nSeparator: \"\\n\",\nInput: std.Formatlist(ctx, \u0026std.FormatlistArgs{\nInput: \"%s\",\nArgs: [][]*string{\n%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:34,16-60),\n},\n}, nil).Result,\n}, nil).Result))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetDomainArgs;\nimport com.pulumi.exoscale.inputs.GetDomainRecordArgs;\nimport com.pulumi.exoscale.inputs.GetDomainRecordFilterArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatlistArgs;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myDomain = ExoscaleFunctions.getDomain(GetDomainArgs.builder()\n            .name(\"my.domain\")\n            .build());\n\n        final var myExoscaleDomainARecords = ExoscaleFunctions.getDomainRecord(GetDomainRecordArgs.builder()\n            .domain(myDomain.name())\n            .filter(GetDomainRecordFilterArgs.builder()\n                .name(\"my-host\")\n                .recordType(\"A\")\n                .build())\n            .build());\n\n        final var myExoscaleDomainNSRecords = ExoscaleFunctions.getDomainRecord(GetDomainRecordArgs.builder()\n            .domain(myDomain.name())\n            .filter(GetDomainRecordFilterArgs.builder()\n                .contentRegex(\"ns.*\")\n                .build())\n            .build());\n\n        ctx.export(\"myExoscaleDomainARecords\", StdFunctions.join(JoinArgs.builder()\n            .separator(\"\"\"\n\n            \"\"\")\n            .input(StdFunctions.formatlist(FormatlistArgs.builder()\n                .input(\"%s\")\n                .args(myExoscaleDomainARecords.records().stream().map(element -\u003e element.name()).collect(toList()))\n                .build()).result())\n            .build()).result());\n        ctx.export(\"myExoscaleDomainNSRecords\", StdFunctions.join(JoinArgs.builder()\n            .separator(\"\"\"\n\n            \"\"\")\n            .input(StdFunctions.formatlist(FormatlistArgs.builder()\n                .input(\"%s\")\n                .args(myExoscaleDomainNSRecords.records().stream().map(element -\u003e element.content()).collect(toList()))\n                .build()).result())\n            .build()).result());\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDomainRecord.\n",
        "properties": {
          "domain": {
            "type": "string",
            "description": "The\u003cspan pulumi-lang-nodejs=\" exoscale.Domain \" pulumi-lang-dotnet=\" exoscale.Domain \" pulumi-lang-go=\" Domain \" pulumi-lang-python=\" Domain \" pulumi-lang-yaml=\" exoscale.Domain \" pulumi-lang-java=\" exoscale.Domain \"\u003e exoscale.Domain \u003c/span\u003ename to match.\n"
          },
          "filter": {
            "$ref": "#/types/exoscale:index%2FgetDomainRecordFilter:getDomainRecordFilter",
            "description": "Filter to apply when looking up domain records.\n"
          }
        },
        "type": "object",
        "required": [
          "domain",
          "filter"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDomainRecord.\n",
        "properties": {
          "domain": {
            "description": "The\u003cspan pulumi-lang-nodejs=\" exoscale.Domain \" pulumi-lang-dotnet=\" exoscale.Domain \" pulumi-lang-go=\" Domain \" pulumi-lang-python=\" Domain \" pulumi-lang-yaml=\" exoscale.Domain \" pulumi-lang-java=\" exoscale.Domain \"\u003e exoscale.Domain \u003c/span\u003ename to match.\n",
            "type": "string"
          },
          "filter": {
            "$ref": "#/types/exoscale:index%2FgetDomainRecordFilter:getDomainRecordFilter",
            "description": "Filter to apply when looking up domain records.\n"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "records": {
            "description": "The list of matching records. Structure is documented below.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetDomainRecordRecord:getDomainRecordRecord"
            },
            "type": "array"
          }
        },
        "required": [
          "domain",
          "filter",
          "id",
          "records"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getElasticIp:getElasticIp": {
      "description": "Fetch Exoscale [Elastic IPs (EIP)](https://community.exoscale.com/product/networking/eip/) data.\n\nCorresponding resource: exoscale_elastic_ip.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myElasticIp = exoscale.getElasticIp({\n    zone: \"ch-gva-2\",\n    ipAddress: \"1.2.3.4\",\n});\nexport const myElasticIpId = myElasticIp.then(myElasticIp =\u003e myElasticIp.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_elastic_ip = exoscale.get_elastic_ip(zone=\"ch-gva-2\",\n    ip_address=\"1.2.3.4\")\npulumi.export(\"myElasticIpId\", my_elastic_ip.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myElasticIp = Exoscale.GetElasticIp.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        IpAddress = \"1.2.3.4\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myElasticIpId\"] = myElasticIp.Apply(getElasticIpResult =\u003e getElasticIpResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyElasticIp, err := exoscale.LookupElasticIp(ctx, \u0026exoscale.LookupElasticIpArgs{\n\t\t\tZone:      \"ch-gva-2\",\n\t\t\tIpAddress: pulumi.StringRef(\"1.2.3.4\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myElasticIpId\", myElasticIp.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetElasticIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myElasticIp = ExoscaleFunctions.getElasticIp(GetElasticIpArgs.builder()\n            .zone(\"ch-gva-2\")\n            .ipAddress(\"1.2.3.4\")\n            .build());\n\n        ctx.export(\"myElasticIpId\", myElasticIp.id());\n    }\n}\n```\n```yaml\nvariables:\n  myElasticIp:\n    fn::invoke:\n      function: exoscale:getElasticIp\n      arguments:\n        zone: ch-gva-2\n        ipAddress: 1.2.3.4\noutputs:\n  myElasticIpId: ${myElasticIp.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getElasticIp.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The Elastic IP (EIP) ID to match (conflicts with \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`ip_address`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e).\n"
          },
          "ipAddress": {
            "type": "string",
            "description": "The EIP IPv4 or IPv6 address to match (conflicts with \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 and \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e).\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The EIP labels to match (conflicts with \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`ip_address`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exocale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getElasticIp.\n",
        "properties": {
          "addressFamily": {
            "description": "The Elastic IP (EIP) address family (\u003cspan pulumi-lang-nodejs=\"`inet4`\" pulumi-lang-dotnet=\"`Inet4`\" pulumi-lang-go=\"`inet4`\" pulumi-lang-python=\"`inet4`\" pulumi-lang-yaml=\"`inet4`\" pulumi-lang-java=\"`inet4`\"\u003e`inet4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`inet6`\" pulumi-lang-dotnet=\"`Inet6`\" pulumi-lang-go=\"`inet6`\" pulumi-lang-python=\"`inet6`\" pulumi-lang-yaml=\"`inet6`\" pulumi-lang-java=\"`inet6`\"\u003e`inet6`\u003c/span\u003e).\n",
            "type": "string"
          },
          "cidr": {
            "description": "The Elastic IP (EIP) CIDR.\n",
            "type": "string"
          },
          "description": {
            "description": "The Elastic IP (EIP) description.\n",
            "type": "string"
          },
          "healthchecks": {
            "description": "The *managed* EIP healthcheck configuration.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetElasticIpHealthcheck:getElasticIpHealthcheck"
            },
            "type": "array"
          },
          "id": {
            "description": "The Elastic IP (EIP) ID to match (conflicts with \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`ip_address`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e).\n",
            "type": "string"
          },
          "ipAddress": {
            "description": "The EIP IPv4 or IPv6 address to match (conflicts with \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 and \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e).\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The EIP labels to match (conflicts with \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`ip_address`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e).\n",
            "type": "object"
          },
          "reverseDns": {
            "description": "Domain name for reverse DNS record.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exocale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "addressFamily",
          "cidr",
          "description",
          "healthchecks",
          "reverseDns",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getIamApiKey:getIamApiKey": {
      "description": "Fetch Exoscale [IAM](https://community.exoscale.com/documentation/iam/) API Key.\n\nCorresponding resource: exoscale_iam_role.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getIamApiKey.\n",
        "properties": {
          "key": {
            "type": "string",
            "description": "The IAM API Key to match.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamApiKeyTimeouts:getIamApiKeyTimeouts"
          }
        },
        "type": "object",
        "required": [
          "key"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getIamApiKey.\n",
        "properties": {
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "key": {
            "description": "The IAM API Key to match.\n",
            "type": "string"
          },
          "name": {
            "description": "IAM API Key name.\n",
            "type": "string"
          },
          "roleId": {
            "description": "IAM API Key role ID.\n",
            "type": "string"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamApiKeyTimeouts:getIamApiKeyTimeouts"
          }
        },
        "required": [
          "id",
          "key",
          "name",
          "roleId"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getIamOrgPolicy:getIamOrgPolicy": {
      "description": "Fetch Exoscale [IAM](https://community.exoscale.com/documentation/iam/) Organization Policy.\n\nCorresponding resource: exoscale_iam_org_policy.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getIamOrgPolicy.\n",
        "properties": {
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamOrgPolicyTimeouts:getIamOrgPolicyTimeouts"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getIamOrgPolicy.\n",
        "properties": {
          "defaultServiceStrategy": {
            "description": "Default service strategy (\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).\n",
            "type": "string"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "services": {
            "additionalProperties": {
              "$ref": "#/types/exoscale:index%2FgetIamOrgPolicyServices:getIamOrgPolicyServices"
            },
            "description": "IAM policy services.\n",
            "type": "object"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamOrgPolicyTimeouts:getIamOrgPolicyTimeouts"
          }
        },
        "required": [
          "defaultServiceStrategy",
          "id",
          "services"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getIamRole:getIamRole": {
      "description": "Fetch Exoscale [IAM](https://community.exoscale.com/documentation/iam/) Role.\n\nCorresponding resource: exoscale_iam_role.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getIamRole.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The role ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "the role name to match (conflicts with \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).\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamRoleTimeouts:getIamRoleTimeouts"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getIamRole.\n",
        "properties": {
          "description": {
            "description": "A free-form text describing the IAM Role\n",
            "type": "string"
          },
          "editable": {
            "description": "Defines if IAM Role Policy is editable or not.\n",
            "type": "boolean"
          },
          "id": {
            "description": "The role ID to match (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",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "IAM Role labels.\n",
            "type": "object"
          },
          "name": {
            "description": "the role name to match (conflicts with \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).\n",
            "type": "string"
          },
          "permissions": {
            "description": "IAM Role permissions.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "policy": {
            "$ref": "#/types/exoscale:index%2FgetIamRolePolicy:getIamRolePolicy",
            "description": "IAM Policy.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetIamRoleTimeouts:getIamRoleTimeouts"
          }
        },
        "required": [
          "description",
          "editable",
          "id",
          "labels",
          "name",
          "permissions",
          "policy"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getInstancePool:getInstancePool": {
      "description": "Fetch Exoscale [Instance Pools](https://community.exoscale.com/product/compute/instances/how-to/instance-pools/) data.\n\nCorresponding resource: exoscale_instance_pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myInstancePool = exoscale.getInstancePool({\n    zone: \"ch-gva-2\",\n    name: \"my-instance-pool\",\n});\nexport const myInstancePoolId = myInstancePool.then(myInstancePool =\u003e myInstancePool.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_instance_pool = exoscale.get_instance_pool(zone=\"ch-gva-2\",\n    name=\"my-instance-pool\")\npulumi.export(\"myInstancePoolId\", my_instance_pool.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myInstancePool = Exoscale.GetInstancePool.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-instance-pool\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myInstancePoolId\"] = myInstancePool.Apply(getInstancePoolResult =\u003e getInstancePoolResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyInstancePool, err := exoscale.LookupInstancePool(ctx, \u0026exoscale.LookupInstancePoolArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"my-instance-pool\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myInstancePoolId\", myInstancePool.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetInstancePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myInstancePool = ExoscaleFunctions.getInstancePool(GetInstancePoolArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-instance-pool\")\n            .build());\n\n        ctx.export(\"myInstancePoolId\", myInstancePool.id());\n    }\n}\n```\n```yaml\nvariables:\n  myInstancePool:\n    fn::invoke:\n      function: exoscale:getInstancePool\n      arguments:\n        zone: ch-gva-2\n        name: my-instance-pool\noutputs:\n  myInstancePoolId: ${myInstancePool.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getInstancePool.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The instance pool ID to match (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"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string",
            "description": "The pool name to match (conflicts with \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).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getInstancePool.\n",
        "properties": {
          "affinityGroupIds": {
            "deprecationMessage": "Use\u003cspan pulumi-lang-nodejs=\" antiAffinityGroupIds \" pulumi-lang-dotnet=\" AntiAffinityGroupIds \" pulumi-lang-go=\" antiAffinityGroupIds \" pulumi-lang-python=\" anti_affinity_group_ids \" pulumi-lang-yaml=\" antiAffinityGroupIds \" pulumi-lang-java=\" antiAffinityGroupIds \"\u003e anti_affinity_group_ids \u003c/span\u003einstead.",
            "description": "The list of attached exoscale*anti*affinity_group (IDs). Use anti*affinity*group_ids instead.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "antiAffinityGroupIds": {
            "description": "The list of attached exoscale*anti*affinity_group (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "deployTargetId": {
            "description": "The deploy target ID.\n",
            "type": "string"
          },
          "description": {
            "description": "The instance pool description.\n",
            "type": "string"
          },
          "diskSize": {
            "description": "The managed instances disk size.\n",
            "type": "integer"
          },
          "elasticIpIds": {
            "description": "The list of attached exoscale*elastic*ip (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "The instance pool ID to match (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",
            "type": "string"
          },
          "instancePrefix": {
            "description": "The string used to prefix the managed instances name.\n",
            "type": "string"
          },
          "instanceType": {
            "description": "The managed instances type.\n",
            "type": "string"
          },
          "instances": {
            "description": "The list of managed instances. Structure is documented below.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetInstancePoolInstance:getInstancePoolInstance"
            },
            "type": "array"
          },
          "ipv6": {
            "description": "Whether IPv6 is enabled on managed instances.\n",
            "type": "boolean"
          },
          "keyPair": {
            "description": "The exoscale*ssh*key (name) authorized on the managed instances.\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n",
            "type": "object"
          },
          "minAvailable": {
            "description": "Minimum number of running Instances.\n",
            "type": "integer"
          },
          "name": {
            "description": "The pool name to match (conflicts with \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).\n",
            "type": "string"
          },
          "networkIds": {
            "description": "The list of attached exoscale*private*network (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "securityGroupIds": {
            "description": "The list of attached exoscale*security*group (IDs).\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "size": {
            "description": "The number managed instances.\n",
            "type": "integer"
          },
          "state": {
            "description": "The pool state.\n",
            "type": "string"
          },
          "templateId": {
            "description": "The managed instances\u003cspan pulumi-lang-nodejs=\" exoscale.getTemplate \" pulumi-lang-dotnet=\" exoscale.getTemplate \" pulumi-lang-go=\" getTemplate \" pulumi-lang-python=\" get_template \" pulumi-lang-yaml=\" exoscale.getTemplate \" pulumi-lang-java=\" exoscale.getTemplate \"\u003e exoscale.getTemplate \u003c/span\u003eID.\n",
            "type": "string"
          },
          "userData": {
            "description": "[cloud-init](http://cloudinit.readthedocs.io/en/latest/) configuration.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "affinityGroupIds",
          "antiAffinityGroupIds",
          "deployTargetId",
          "description",
          "diskSize",
          "elasticIpIds",
          "instancePrefix",
          "instanceType",
          "instances",
          "ipv6",
          "keyPair",
          "minAvailable",
          "networkIds",
          "securityGroupIds",
          "size",
          "state",
          "templateId",
          "userData",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getInstancePoolList:getInstancePoolList": {
      "description": "List Exoscale [Instance Pools](https://community.exoscale.com/product/compute/instances/how-to/instance-pools/).\n\nCorresponding resource: exoscale_instance_pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\nimport * as std from \"@pulumi/std\";\n\nconst myInstancePoolList = exoscale.getInstancePoolList({\n    zone: \"ch-gva-2\",\n});\nexport const myInstancePoolIds = std.formatlist({\n    input: \"%s\",\n    args: [myInstancePoolList.then(myInstancePoolList =\u003e myInstancePoolList.pools.map(__item =\u003e __item.id))],\n}).then(invoke =\u003e std.join({\n    separator: \"\\n\",\n    input: invoke.result,\n})).then(invoke =\u003e invoke.result);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\nimport pulumi_std as std\n\nmy_instance_pool_list = exoscale.get_instance_pool_list(zone=\"ch-gva-2\")\npulumi.export(\"myInstancePoolIds\", std.join(separator=\"\\n\",\n    input=std.formatlist(input=\"%s\",\n        args=[[__item.id for __item in my_instance_pool_list.pools]]).result).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myInstancePoolList = Exoscale.GetInstancePoolList.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myInstancePoolIds\"] = Std.Formatlist.Invoke(new()\n        {\n            Input = \"%s\",\n            Args = new[]\n            {\n                myInstancePoolList.Apply(getInstancePoolListResult =\u003e getInstancePoolListResult.Pools).Select(__item =\u003e __item.Id).ToList(),\n            },\n        }).Apply(invoke =\u003e Std.Join.Invoke(new()\n        {\n            Separator = @\"\n\",\n            Input = invoke.Result,\n        })).Apply(invoke =\u003e invoke.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-exoscale/sdk/go/exoscale\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nmyInstancePoolList, err := exoscale.GetInstancePoolList(ctx, \u0026exoscale.GetInstancePoolListArgs{\nZone: \"ch-gva-2\",\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"myInstancePoolIds\", pulumi.String(std.Join(ctx, \u0026std.JoinArgs{\nSeparator: \"\\n\",\nInput: std.Formatlist(ctx, \u0026std.FormatlistArgs{\nInput: \"%s\",\nArgs: [][]*string{\n%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:9,16-46),\n},\n}, nil).Result,\n}, nil).Result))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetInstancePoolListArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatlistArgs;\nimport com.pulumi.std.inputs.JoinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myInstancePoolList = ExoscaleFunctions.getInstancePoolList(GetInstancePoolListArgs.builder()\n            .zone(\"ch-gva-2\")\n            .build());\n\n        ctx.export(\"myInstancePoolIds\", StdFunctions.join(JoinArgs.builder()\n            .separator(\"\"\"\n\n            \"\"\")\n            .input(StdFunctions.formatlist(FormatlistArgs.builder()\n                .input(\"%s\")\n                .args(myInstancePoolList.pools().stream().map(element -\u003e element.id()).collect(toList()))\n                .build()).result())\n            .build()).result());\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getInstancePoolList.\n",
        "properties": {
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getInstancePoolList.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "pools": {
            "description": "The list of exoscale*instance*pool.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetInstancePoolListPool:getInstancePoolListPool"
            },
            "type": "array"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "pools",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getNlb:getNlb": {
      "description": "Fetch Exoscale [Network Load Balancers (NLB)](https://community.exoscale.com/product/networking/nlb/) data.\n\nCorresponding resource: exoscale_nlb.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myNlb = exoscale.getNlb({\n    zone: \"ch-gva-2\",\n    name: \"my-nlb\",\n});\nexport const myNlbId = myNlb.then(myNlb =\u003e myNlb.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_nlb = exoscale.get_nlb(zone=\"ch-gva-2\",\n    name=\"my-nlb\")\npulumi.export(\"myNlbId\", my_nlb.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myNlb = Exoscale.GetNlb.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-nlb\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myNlbId\"] = myNlb.Apply(getNlbResult =\u003e getNlbResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyNlb, err := exoscale.LookupNlb(ctx, \u0026exoscale.LookupNlbArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"my-nlb\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myNlbId\", myNlb.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetNlbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myNlb = ExoscaleFunctions.getNlb(GetNlbArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-nlb\")\n            .build());\n\n        ctx.export(\"myNlbId\", myNlb.id());\n    }\n}\n```\n```yaml\nvariables:\n  myNlb:\n    fn::invoke:\n      function: exoscale:getNlb\n      arguments:\n        zone: ch-gva-2\n        name: my-nlb\noutputs:\n  myNlbId: ${myNlb.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNlb.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The Network Load Balancers (NLB) ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "The NLB name to match (conflicts with \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).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNlb.\n",
        "properties": {
          "createdAt": {
            "description": "The NLB creation date.\n",
            "type": "string"
          },
          "description": {
            "description": "The Network Load Balancers (NLB) description.\n",
            "type": "string"
          },
          "id": {
            "description": "The Network Load Balancers (NLB) ID to match (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",
            "type": "string"
          },
          "ipAddress": {
            "description": "The NLB public IPv4 address.\n",
            "type": "string"
          },
          "name": {
            "description": "The NLB name to match (conflicts with \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).\n",
            "type": "string"
          },
          "state": {
            "description": "The current NLB state.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "description",
          "ipAddress",
          "state",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getNlbServiceList:getNlbServiceList": {
      "description": "Fetch Exoscale [Network Load Balancers (NLB)](https://community.exoscale.com/product/networking/nlb/) Services.\n\nCorresponding resource: exoscale_nlb.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nvariables:\n  exampleNlbServices:\n    fn::invoke:\n      function: exoscale:getNlbServiceList\n      arguments:\n        name: my-nlb\noutputs:\n  # Outputs\n  nlbServicesOutput: ${exampleNlbServices.services}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNlbServiceList.\n",
        "properties": {
          "nlbId": {
            "type": "string",
            "description": "The NLB ID to match (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"
          },
          "nlbName": {
            "type": "string",
            "description": "The NLB name to match (conflicts with \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).\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetNlbServiceListTimeouts:getNlbServiceListTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNlbServiceList.\n",
        "properties": {
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "nlbId": {
            "description": "The NLB ID to match (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",
            "type": "string"
          },
          "nlbName": {
            "description": "The NLB name to match (conflicts with \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).\n",
            "type": "string"
          },
          "services": {
            "description": "The list of exoscale*nlb*service.\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetNlbServiceListService:getNlbServiceListService"
            },
            "type": "array"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetNlbServiceListTimeouts:getNlbServiceListTimeouts"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "services",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getPrivateNetwork:getPrivateNetwork": {
      "description": "Fetch Exoscale [Private Networks](https://community.exoscale.com/product/networking/private-network/) data.\n\nCorresponding resource: exoscale_private_network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myPrivateNetwork = exoscale.getPrivateNetwork({\n    zone: \"ch-gva-2\",\n    name: \"my-private-network\",\n});\nexport const myPrivateNetworkId = myPrivateNetwork.then(myPrivateNetwork =\u003e myPrivateNetwork.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_private_network = exoscale.get_private_network(zone=\"ch-gva-2\",\n    name=\"my-private-network\")\npulumi.export(\"myPrivateNetworkId\", my_private_network.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myPrivateNetwork = Exoscale.GetPrivateNetwork.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"my-private-network\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myPrivateNetworkId\"] = myPrivateNetwork.Apply(getPrivateNetworkResult =\u003e getPrivateNetworkResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyPrivateNetwork, err := exoscale.LookupPrivateNetwork(ctx, \u0026exoscale.LookupPrivateNetworkArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"my-private-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myPrivateNetworkId\", myPrivateNetwork.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetPrivateNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myPrivateNetwork = ExoscaleFunctions.getPrivateNetwork(GetPrivateNetworkArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"my-private-network\")\n            .build());\n\n        ctx.export(\"myPrivateNetworkId\", myPrivateNetwork.id());\n    }\n}\n```\n```yaml\nvariables:\n  myPrivateNetwork:\n    fn::invoke:\n      function: exoscale:getPrivateNetwork\n      arguments:\n        zone: ch-gva-2\n        name: my-private-network\noutputs:\n  myPrivateNetworkId: ${myPrivateNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getPrivateNetwork.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "The private network description.\n"
          },
          "id": {
            "type": "string",
            "description": "The private network ID to match (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"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string",
            "description": "The network name to match (conflicts with \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).\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getPrivateNetwork.\n",
        "properties": {
          "description": {
            "description": "The private network description.\n",
            "type": "string"
          },
          "endIp": {
            "description": "The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n",
            "type": "string"
          },
          "id": {
            "description": "The private network ID to match (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",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n",
            "type": "object"
          },
          "name": {
            "description": "The network name to match (conflicts with \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).\n",
            "type": "string"
          },
          "netmask": {
            "description": "The network mask defining the IPv4 network allowed for static leases.\n",
            "type": "string"
          },
          "startIp": {
            "description": "The first/last IPv4 addresses used by the DHCP service for dynamic leases.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "endIp",
          "netmask",
          "startIp",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSecurityGroup:getSecurityGroup": {
      "description": "Fetch Exoscale [Security Groups](https://community.exoscale.com/product/networking/security-group/) data.\n\nCorresponding resource: exoscale_security_group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst mySecurityGroup = exoscale.getSecurityGroup({\n    name: \"my-security-group\",\n});\nexport const mySecurityGroupId = mySecurityGroup.then(mySecurityGroup =\u003e mySecurityGroup.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_security_group = exoscale.get_security_group(name=\"my-security-group\")\npulumi.export(\"mySecurityGroupId\", my_security_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mySecurityGroup = Exoscale.GetSecurityGroup.Invoke(new()\n    {\n        Name = \"my-security-group\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mySecurityGroupId\"] = mySecurityGroup.Apply(getSecurityGroupResult =\u003e getSecurityGroupResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmySecurityGroup, err := exoscale.LookupSecurityGroup(ctx, \u0026exoscale.LookupSecurityGroupArgs{\n\t\t\tName: pulumi.StringRef(\"my-security-group\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"mySecurityGroupId\", mySecurityGroup.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetSecurityGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mySecurityGroup = ExoscaleFunctions.getSecurityGroup(GetSecurityGroupArgs.builder()\n            .name(\"my-security-group\")\n            .build());\n\n        ctx.export(\"mySecurityGroupId\", mySecurityGroup.id());\n    }\n}\n```\n```yaml\nvariables:\n  mySecurityGroup:\n    fn::invoke:\n      function: exoscale:getSecurityGroup\n      arguments:\n        name: my-security-group\noutputs:\n  mySecurityGroupId: ${mySecurityGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getSecurityGroup.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The security group ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "The name to match (conflicts with \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)\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getSecurityGroup.\n",
        "properties": {
          "externalSources": {
            "description": "The list of external network sources, in [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) notation.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "The security group ID to match (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",
            "type": "string"
          },
          "name": {
            "description": "The name to match (conflicts with \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)\n",
            "type": "string"
          }
        },
        "required": [
          "externalSources"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSksCluster:getSksCluster": {
      "inputs": {
        "description": "A collection of arguments for invoking getSksCluster.\n",
        "properties": {
          "addons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "deprecationMessage": "This attribute has been replaced by \u003cspan pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\"\u003e`exoscale_ccm`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\"\u003e`metrics_server`\u003c/span\u003e attributes, it will be removed in a future release."
          },
          "aggregationCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between the control plane and the aggregation layer (e.g. `metrics-server`).\n"
          },
          "audit": {
            "$ref": "#/types/exoscale:index%2FgetSksClusterAudit:getSksClusterAudit"
          },
          "autoUpgrade": {
            "type": "boolean",
            "description": "Enable automatic upgrading of the control plane version.\n"
          },
          "cni": {
            "type": "string",
            "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n"
          },
          "controlPlaneCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between control plane components.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "The cluster creation date.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the cluster.\n"
          },
          "enableKubeProxy": {
            "type": "boolean",
            "description": "❗ Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n",
            "willReplaceOnChanges": true
          },
          "endpoint": {
            "type": "string",
            "description": "The cluster API endpoint.\n"
          },
          "exoscaleCcm": {
            "type": "boolean",
            "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: \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; may only be set at creation time).\n"
          },
          "exoscaleCsi": {
            "type": "boolean",
            "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: \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; requires the CCM to be enabled).\n"
          },
          "featureGates": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Feature gates options for the cluster.\n"
          },
          "id": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "kubeletCa": {
            "type": "string",
            "description": "The CA certificate (in PEM format) for TLS communications between kubelets and the control plane.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "metricsServer": {
            "type": "boolean",
            "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: \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; may only be set at creation time).\n"
          },
          "name": {
            "type": "string"
          },
          "nodepools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of exoscale*sks*nodepool (IDs) attached to the cluster.\n"
          },
          "oidc": {
            "$ref": "#/types/exoscale:index%2FgetSksClusterOidc:getSksClusterOidc",
            "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
          },
          "serviceLevel": {
            "type": "string",
            "description": "The service level of the control plane (\u003cspan pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\"\u003e`pro`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\"\u003e`starter`\u003c/span\u003e; default: \u003cspan pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\"\u003e`pro`\u003c/span\u003e; may only be set at creation time).\n"
          },
          "state": {
            "type": "string",
            "description": "The cluster state.\n"
          },
          "version": {
            "type": "string",
            "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSksCluster.\n",
        "properties": {
          "addons": {
            "deprecationMessage": "This attribute has been replaced by \u003cspan pulumi-lang-nodejs=\"`exoscaleCcm`\" pulumi-lang-dotnet=\"`ExoscaleCcm`\" pulumi-lang-go=\"`exoscaleCcm`\" pulumi-lang-python=\"`exoscale_ccm`\" pulumi-lang-yaml=\"`exoscaleCcm`\" pulumi-lang-java=\"`exoscaleCcm`\"\u003e`exoscale_ccm`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`metricsServer`\" pulumi-lang-dotnet=\"`MetricsServer`\" pulumi-lang-go=\"`metricsServer`\" pulumi-lang-python=\"`metrics_server`\" pulumi-lang-yaml=\"`metricsServer`\" pulumi-lang-java=\"`metricsServer`\"\u003e`metrics_server`\u003c/span\u003e attributes, it will be removed in a future release.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "aggregationCa": {
            "description": "The CA certificate (in PEM format) for TLS communications between the control plane and the aggregation layer (e.g. `metrics-server`).\n",
            "type": "string"
          },
          "audit": {
            "$ref": "#/types/exoscale:index%2FgetSksClusterAudit:getSksClusterAudit"
          },
          "autoUpgrade": {
            "description": "Enable automatic upgrading of the control plane version.\n",
            "type": "boolean"
          },
          "cni": {
            "description": "The CNI plugin that is to be used. Available options are \"calico\" or \"cilium\". Defaults to \"calico\". Setting empty string will result in a cluster with no CNI.\n",
            "type": "string"
          },
          "controlPlaneCa": {
            "description": "The CA certificate (in PEM format) for TLS communications between control plane components.\n",
            "type": "string"
          },
          "createdAt": {
            "description": "The cluster creation date.\n",
            "type": "string"
          },
          "description": {
            "description": "A free-form text describing the cluster.\n",
            "type": "string"
          },
          "enableKubeProxy": {
            "description": "❗ Indicates whether to deploy the Kubernetes network proxy. (may only be set at creation time)\n",
            "type": "boolean"
          },
          "endpoint": {
            "description": "The cluster API endpoint.\n",
            "type": "string"
          },
          "exoscaleCcm": {
            "description": "Deploy the Exoscale [Cloud Controller Manager](https://github.com/exoscale/exoscale-cloud-controller-manager/) in the control plane (boolean; default: \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; may only be set at creation time).\n",
            "type": "boolean"
          },
          "exoscaleCsi": {
            "description": "Deploy the Exoscale [Container Storage Interface](https://github.com/exoscale/exoscale-csi-driver/) on worker nodes (boolean; default: \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; requires the CCM to be enabled).\n",
            "type": "boolean"
          },
          "featureGates": {
            "description": "Feature gates options for the cluster.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "kubeletCa": {
            "description": "The CA certificate (in PEM format) for TLS communications between kubelets and the control plane.\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n",
            "type": "object"
          },
          "metricsServer": {
            "description": "Deploy the [Kubernetes Metrics Server](https://github.com/kubernetes-sigs/metrics-server/) in the control plane (boolean; default: \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; may only be set at creation time).\n",
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "nodepools": {
            "description": "The list of exoscale*sks*nodepool (IDs) attached to the cluster.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "oidc": {
            "$ref": "#/types/exoscale:index%2FgetSksClusterOidc:getSksClusterOidc",
            "description": "An OpenID Connect configuration to provide to the Kubernetes API server (may only be set at creation time). Structure is documented below.\n"
          },
          "serviceLevel": {
            "description": "The service level of the control plane (\u003cspan pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\"\u003e`pro`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`starter`\" pulumi-lang-dotnet=\"`Starter`\" pulumi-lang-go=\"`starter`\" pulumi-lang-python=\"`starter`\" pulumi-lang-yaml=\"`starter`\" pulumi-lang-java=\"`starter`\"\u003e`starter`\u003c/span\u003e; default: \u003cspan pulumi-lang-nodejs=\"`pro`\" pulumi-lang-dotnet=\"`Pro`\" pulumi-lang-go=\"`pro`\" pulumi-lang-python=\"`pro`\" pulumi-lang-yaml=\"`pro`\" pulumi-lang-java=\"`pro`\"\u003e`pro`\u003c/span\u003e; may only be set at creation time).\n",
            "type": "string"
          },
          "state": {
            "description": "The cluster state.\n",
            "type": "string"
          },
          "version": {
            "description": "The version of the control plane (default: latest version available from the API; see `exo compute sks versions` for reference; may only be set at creation time).\n",
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "required": [
          "addons",
          "aggregationCa",
          "controlPlaneCa",
          "createdAt",
          "enableKubeProxy",
          "endpoint",
          "kubeletCa",
          "nodepools",
          "oidc",
          "state",
          "version",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSksClusterList:getSksClusterList": {
      "inputs": {
        "description": "A collection of arguments for invoking getSksClusterList.\n",
        "properties": {
          "aggregationCa": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "autoUpgrade": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "cni": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "controlPlaneCa": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "description": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "enableKubeProxy": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "endpoint": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "exoscaleCcm": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "exoscaleCsi": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "id": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "kubeletCa": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n"
          },
          "metricsServer": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "name": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "serviceLevel": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "state": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "version": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSksClusterList.\n",
        "properties": {
          "aggregationCa": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "autoUpgrade": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "clusters": {
            "items": {
              "$ref": "#/types/exoscale:index%2FgetSksClusterListCluster:getSksClusterListCluster"
            },
            "type": "array"
          },
          "cni": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "controlPlaneCa": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "createdAt": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "description": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "enableKubeProxy": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "endpoint": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "exoscaleCcm": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "exoscaleCsi": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "id": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "kubeletCa": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n",
            "type": "object"
          },
          "metricsServer": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "name": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "serviceLevel": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "state": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "version": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "clusters",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSksNodepool:getSksNodepool": {
      "inputs": {
        "description": "A collection of arguments for invoking getSksNodepool.\n",
        "properties": {
          "antiAffinityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*anti*affinity_group (IDs) to be attached to the managed instances.\n"
          },
          "clusterId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "description": "The pool creation date.\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "A deploy target ID.\n"
          },
          "description": {
            "type": "string",
            "description": "A free-form text describing the pool.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "The managed instances disk size (GiB; default: \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e).\n"
          },
          "id": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "instancePoolId": {
            "type": "string",
            "description": "The underlying exoscale*instance*pool ID.\n"
          },
          "instancePrefix": {
            "type": "string",
            "description": "The string used to prefix the managed instances name (default \u003cspan pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\"\u003e`pool`\u003c/span\u003e).\n"
          },
          "instanceType": {
            "type": "string",
            "description": "The managed compute instances type (`\u003cfamily\u003e.\u003csize\u003e`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Enable IPV6 for the nodepool nodes\n"
          },
          "kubeletImageGcs": {
            "type": "array",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetSksNodepoolKubeletImageGc:getSksNodepoolKubeletImageGc"
            },
            "description": "Configuration for this nodepool's kubelet image garbage collector\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n"
          },
          "name": {
            "type": "string"
          },
          "privateNetworkIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*private*network (IDs) to be attached to the managed instances.\n"
          },
          "securityGroupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of exoscale*security*group (IDs) to be attached to the managed instances.\n"
          },
          "size": {
            "type": "integer"
          },
          "state": {
            "type": "string",
            "description": "The current pool state.\n"
          },
          "storageLvm": {
            "type": "boolean",
            "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n"
          },
          "taints": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { \\n\\n = \"\\n\\n:\\n\\n\" }').\n"
          },
          "templateId": {
            "type": "string",
            "description": "The managed instances template ID.\n"
          },
          "version": {
            "type": "string",
            "description": "The managed instances version.\n"
          },
          "zone": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId",
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSksNodepool.\n",
        "properties": {
          "antiAffinityGroupIds": {
            "description": "A list of exoscale*anti*affinity_group (IDs) to be attached to the managed instances.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "clusterId": {
            "type": "string"
          },
          "createdAt": {
            "description": "The pool creation date.\n",
            "type": "string"
          },
          "deployTargetId": {
            "description": "A deploy target ID.\n",
            "type": "string"
          },
          "description": {
            "description": "A free-form text describing the pool.\n",
            "type": "string"
          },
          "diskSize": {
            "description": "The managed instances disk size (GiB; default: \u003cspan pulumi-lang-nodejs=\"`50`\" pulumi-lang-dotnet=\"`50`\" pulumi-lang-go=\"`50`\" pulumi-lang-python=\"`50`\" pulumi-lang-yaml=\"`50`\" pulumi-lang-java=\"`50`\"\u003e`50`\u003c/span\u003e).\n",
            "type": "integer"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "instancePoolId": {
            "description": "The underlying exoscale*instance*pool ID.\n",
            "type": "string"
          },
          "instancePrefix": {
            "description": "The string used to prefix the managed instances name (default \u003cspan pulumi-lang-nodejs=\"`pool`\" pulumi-lang-dotnet=\"`Pool`\" pulumi-lang-go=\"`pool`\" pulumi-lang-python=\"`pool`\" pulumi-lang-yaml=\"`pool`\" pulumi-lang-java=\"`pool`\"\u003e`pool`\u003c/span\u003e).\n",
            "type": "string"
          },
          "instanceType": {
            "description": "The managed compute instances type (`\u003cfamily\u003e.\u003csize\u003e`, e.g. `standard.medium`; use the [Exoscale CLI](https://github.com/exoscale/cli/) - `exo compute instance-type list` - for the list of available types).\n",
            "type": "string"
          },
          "ipv6": {
            "description": "Enable IPV6 for the nodepool nodes\n",
            "type": "boolean"
          },
          "kubeletImageGcs": {
            "description": "Configuration for this nodepool's kubelet image garbage collector\n",
            "items": {
              "$ref": "#/types/exoscale:index%2FgetSksNodepoolKubeletImageGc:getSksNodepoolKubeletImageGc"
            },
            "type": "array"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value labels.\n",
            "type": "object"
          },
          "name": {
            "type": "string"
          },
          "privateNetworkIds": {
            "description": "A list of exoscale*private*network (IDs) to be attached to the managed instances.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "securityGroupIds": {
            "description": "A list of exoscale*security*group (IDs) to be attached to the managed instances.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "size": {
            "type": "integer"
          },
          "state": {
            "description": "The current pool state.\n",
            "type": "string"
          },
          "storageLvm": {
            "description": "Create nodes with non-standard partitioning for persistent storage (requires min 100G of disk space) (may only be set at creation time).\n",
            "type": "boolean"
          },
          "taints": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of key/value Kubernetes [taints](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) ('taints = { \\n\\n = \"\\n\\n:\\n\\n\" }').\n",
            "type": "object"
          },
          "templateId": {
            "description": "The managed instances template ID.\n",
            "type": "string"
          },
          "version": {
            "description": "The managed instances version.\n",
            "type": "string"
          },
          "zone": {
            "type": "string"
          }
        },
        "required": [
          "clusterId",
          "createdAt",
          "instancePoolId",
          "state",
          "templateId",
          "version",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSksNodepoolList:getSksNodepoolList": {
      "inputs": {
        "description": "A collection of arguments for invoking getSksNodepoolList.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "createdAt": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "deployTargetId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "description": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "diskSize": {
            "type": "integer",
            "description": "Match against this int\n"
          },
          "id": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "instancePoolId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "instancePrefix": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "instanceType": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n"
          },
          "name": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "size": {
            "type": "integer",
            "description": "Match against this int\n"
          },
          "state": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "storageLvm": {
            "type": "boolean",
            "description": "Match against this bool\n"
          },
          "taints": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n"
          },
          "templateId": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "version": {
            "type": "string",
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSksNodepoolList.\n",
        "properties": {
          "clusterId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "createdAt": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "deployTargetId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "description": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "diskSize": {
            "description": "Match against this int\n",
            "type": "integer"
          },
          "id": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "instancePoolId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "instancePrefix": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "instanceType": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "ipv6": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n",
            "type": "object"
          },
          "name": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "nodepools": {
            "items": {
              "$ref": "#/types/exoscale:index%2FgetSksNodepoolListNodepool:getSksNodepoolListNodepool"
            },
            "type": "array"
          },
          "size": {
            "description": "Match against this int\n",
            "type": "integer"
          },
          "state": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "storageLvm": {
            "description": "Match against this bool\n",
            "type": "boolean"
          },
          "taints": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Match against key/values. Keys are matched exactly, while values may be matched as a regex if you supply a string that begins and ends with \"/\"\n",
            "type": "object"
          },
          "templateId": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "version": {
            "description": "Match against this string. If you supply a string that begins and ends with a \"/\" it will be matched as a regex.\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "nodepools",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getSosBucketPolicy:getSosBucketPolicy": {
      "description": "Fetch Exoscale [SOS Bucket Policies](https://community.exoscale.com/product/storage/object-storage/how-to/bucketpolicy/).\n",
      "inputs": {
        "description": "A collection of arguments for invoking getSosBucketPolicy.\n",
        "properties": {
          "bucket": {
            "type": "string",
            "description": "The name of the bucket to which the policy is to be applied.\n"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetSosBucketPolicyTimeouts:getSosBucketPolicyTimeouts"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "bucket",
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSosBucketPolicy.\n",
        "properties": {
          "bucket": {
            "description": "The name of the bucket to which the policy is to be applied.\n",
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "policy": {
            "description": "The content of the policy\n",
            "type": "string"
          },
          "timeouts": {
            "$ref": "#/types/exoscale:index%2FgetSosBucketPolicyTimeouts:getSosBucketPolicyTimeouts"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "id",
          "policy",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getTemplate:getTemplate": {
      "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst myTemplate = exoscale.getTemplate({\n    zone: \"ch-gva-2\",\n    name: \"Linux Ubuntu 22.04 LTS 64-bit\",\n});\nexport const myTemplateId = myTemplate.then(myTemplate =\u003e myTemplate.id);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nmy_template = exoscale.get_template(zone=\"ch-gva-2\",\n    name=\"Linux Ubuntu 22.04 LTS 64-bit\")\npulumi.export(\"myTemplateId\", my_template.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myTemplate = Exoscale.GetTemplate.Invoke(new()\n    {\n        Zone = \"ch-gva-2\",\n        Name = \"Linux Ubuntu 22.04 LTS 64-bit\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"myTemplateId\"] = myTemplate.Apply(getTemplateResult =\u003e getTemplateResult.Id),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyTemplate, err := exoscale.GetTemplate(ctx, \u0026exoscale.GetTemplateArgs{\n\t\t\tZone: \"ch-gva-2\",\n\t\t\tName: pulumi.StringRef(\"Linux Ubuntu 22.04 LTS 64-bit\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"myTemplateId\", myTemplate.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport com.pulumi.exoscale.inputs.GetTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var myTemplate = ExoscaleFunctions.getTemplate(GetTemplateArgs.builder()\n            .zone(\"ch-gva-2\")\n            .name(\"Linux Ubuntu 22.04 LTS 64-bit\")\n            .build());\n\n        ctx.export(\"myTemplateId\", myTemplate.id());\n    }\n}\n```\n```yaml\nvariables:\n  myTemplate:\n    fn::invoke:\n      function: exoscale:getTemplate\n      arguments:\n        zone: ch-gva-2\n        name: Linux Ubuntu 22.04 LTS 64-bit\noutputs:\n  myTemplateId: ${myTemplate.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "inputs": {
        "description": "A collection of arguments for invoking getTemplate.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The compute instance template ID to match (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"
          },
          "name": {
            "type": "string",
            "description": "The template name to match (conflicts with \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) (when multiple templates have the same name, the newest one will be returned).\n"
          },
          "visibility": {
            "type": "string",
            "description": "A template category filter (default: \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); among: - \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 - official Exoscale templates - \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 - custom templates private to my organization\n"
          },
          "zone": {
            "type": "string",
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n"
          }
        },
        "type": "object",
        "required": [
          "zone"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getTemplate.\n",
        "properties": {
          "defaultUser": {
            "description": "Username to use to log into a compute instance based on this template\n",
            "type": "string"
          },
          "id": {
            "description": "The compute instance template ID to match (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",
            "type": "string"
          },
          "name": {
            "description": "The template name to match (conflicts with \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) (when multiple templates have the same name, the newest one will be returned).\n",
            "type": "string"
          },
          "visibility": {
            "description": "A template category filter (default: \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); among: - \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 - official Exoscale templates - \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 - custom templates private to my organization\n",
            "type": "string"
          },
          "zone": {
            "description": "The Exoscale [Zone](https://www.exoscale.com/datacenters/) name.\n",
            "type": "string"
          }
        },
        "required": [
          "defaultUser",
          "zone"
        ],
        "type": "object"
      }
    },
    "exoscale:index/getZones:getZones": {
      "description": "Lists all zones.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as exoscale from \"@pulumiverse/exoscale\";\n\nconst exampleZones = exoscale.getZones({});\nexport const zonesOutput = exampleZones.then(exampleZones =\u003e exampleZones.zones);\n```\n```python\nimport pulumi\nimport pulumi_exoscale as exoscale\n\nexample_zones = exoscale.get_zones()\npulumi.export(\"zonesOutput\", example_zones.zones)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Exoscale = Pulumi.Exoscale;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleZones = Exoscale.GetZones.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"zonesOutput\"] = exampleZones.Apply(getZonesResult =\u003e getZonesResult.Zones),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-exoscale/sdk/go/exoscale\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleZones, err := exoscale.GetZones(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"zonesOutput\", exampleZones.Zones)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.exoscale.ExoscaleFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 exampleZones = ExoscaleFunctions.getZones(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"zonesOutput\", exampleZones.zones());\n    }\n}\n```\n```yaml\nvariables:\n  exampleZones:\n    fn::invoke:\n      function: exoscale:getZones\n      arguments: {}\noutputs:\n  # Outputs\n  zonesOutput: ${exampleZones.zones}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nPlease refer to the examples\ndirectory for complete configuration examples.\n",
      "outputs": {
        "description": "A collection of values returned by getZones.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "zones": {
            "description": "List of zones\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "zones"
        ],
        "type": "object"
      }
    },
    "pulumi:providers:exoscale/terraformConfig": {
      "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
      "inputs": {
        "properties": {
          "__self__": {
            "$ref": "#/resources/pulumi:providers:exoscale"
          }
        },
        "type": "object",
        "required": [
          "__self__"
        ]
      },
      "outputs": {
        "properties": {
          "result": {
            "additionalProperties": {
              "$ref": "pulumi.json#/Any"
            },
            "type": "object"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      }
    }
  }
}
